`
hugh.wangp
  • 浏览: 292963 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

HIVE元数据

    博客分类:
  • HIVE
阅读更多

HIVE元数据表数据字典:

表名

说明

BUCKETING_COLS

HiveCLUSTERED BY字段信息(字段名,字段序号)

COLUMNS

Hive表字段信息(字段注释,字段名,字段类型,字段序号)

DBS

 

NUCLEUS_TABLES

元数据表和hiveclass类的对应关系

PARTITIONS

Hive表分区信息(创建时间,具体的分区)

PARTITION_KEYS

Hive分区表分区键(名称,类型,comment,序号)

PARTITION_KEY_VALS

Hive表分区名(键值,序号)

PARTITION_PARAMS

 

SDS

所有hive表、表分区所对应的hdfs数据目录和数据格式

SD_PARAMS

 

SEQUENCE_TABLE

Hive对象的下一个可用ID

SERDES

Hive表序列化反序列化使用的类库信息

SERDE_PARAMS

序列化反序列化信息,如行分隔符、列分隔符、NULL的表示字符等

SORT_COLS

HiveSORTED BY字段信息(字段名,sort类型,字段序号)

TABLE_PARAMS

表级属性,如是否外部表,表注释等

TBLS

所有hive表的基本信息

这些表的内容在HIVE里面是有很格式化的显示,在HIVE里面输入describe formatted table_name;展示出来的信息就是表格中所有表(除了NUCLEUS_TABLE, SEQUENCE_TABLE这两张表)的信息,而且key值基本上和元数据的表字段名称一致。

HIVE如何定义和操作元数据:
定义:
\src\metastore\src\model\ package.jdo和org.apache.hadoop.hive.metastore.model.*用来定义元数据的数据字典和操作。

以TBLS表为例:
Mysql中的表结构为:
mysql> desc TBLS;
+--------------------+--------------+------+-----+---------+-------+
| Field              | Type         | Null | Key | Default | Extra |
+--------------------+--------------+------+-----+---------+-------+
| TBL_ID             | bigint(20)   | NO   | PRI | NULL    |       |
| CREATE_TIME        | int(11)      | NO   |     | NULL    |       |
| DB_ID              | bigint(20)   | YES  | MUL | NULL    |       |
| LAST_ACCESS_TIME   | int(11)      | NO   |     | NULL    |       |
| OWNER              | varchar(767) | YES  |     | NULL    |       |
| RETENTION          | int(11)      | NO   |     | NULL    |       |
| SD_ID              | bigint(20)   | YES  | MUL | NULL    |       |
| TBL_NAME           | varchar(128) | YES  | MUL | NULL    |       |
| VIEW_EXPANDED_TEXT | mediumtext   | YES  |     | NULL    |       |
| VIEW_ORIGINAL_TEXT | mediumtext   | YES  |     | NULL    |       |
| TBL_TYPE           | varchar(128) | YES  |     | NULL    |       |
+--------------------+--------------+------+-----+---------+-------+
 
在package.jdo里的定义为:
<class name="MTable" table="TBLS" identity-type="datastore" detachable="true">
  <datastore-identity>
    <column name="TBL_ID"/>
  </datastore-identity>
  <index name="UniqueTable" unique="true">
    <column name="TBL_NAME"/>
    <column name="DB_ID"/>
  </index>
  <field name="tableName">
    <column name="TBL_NAME" length="128" jdbc-type="VARCHAR"/>
  </field>
  <field name="database">
    <column name="DB_ID"/>
  </field>
  <field name="sd" dependent="true">
    <column name="SD_ID"/>
  </field>
  <field name="owner">
    <column name="OWNER" length="767" jdbc-type="VARCHAR"/>
  </field>
  <field name="createTime">
    <column name="CREATE_TIME" jdbc-type="integer"/>
  </field>
  <field name="lastAccessTime">
    <column name="LAST_ACCESS_TIME" jdbc-type="integer"/>
  </field>
  <field name="retention">
    <column name="RETENTION" jdbc-type="integer"/>
  </field>
  <field name="viewOriginalText">
    <column name="VIEW_ORIGINAL_TEXT" jdbc-type="LONGVARCHAR"/>
  </field>
  <field name="viewExpandedText">
    <column name="VIEW_EXPANDED_TEXT" jdbc-type="LONGVARCHAR"/>
  </field>
  <field name="tableType">
    <column name="TBL_TYPE" length="128" jdbc-type="VARCHAR"/>
  </field>
</class>
 
表名为:TBLS;对应的类为:org.apache.hadoop.hive.metastore.model. MTable,TBLS的所有操作都在此类中定义。

操作:
org.apache.hadoop.hive.metastore. ObjectStore
定义了如何获取元数据,如何写入元数据,其实全部是调用javax.jdo中各个类的方法。
以listPartitionNames为例:
public List<String> listPartitionNames(String dbName, String tableName,
    short max) throws MetaException {
  List<String> pns = new ArrayList<String>();
  boolean success = false;
  try {
    openTransaction();
    LOG.debug("Executing getPartitionNames");
    dbName = dbName.toLowerCase().trim();
    tableName = tableName.toLowerCase().trim();
    javax.jdo.Query q = pm.newQuery(
        "select partitionName from org.apache.hadoop.hive.metastore.model.MPartition "
        + "where table.database.name == t1 && table.tableName == t2 "
        + "order by partitionName asc");
    q.declareParameters("java.lang.String t1, java.lang.String t2");
    q.setResult("partitionName");
    Collection names = (Collection) q.execute(dbName, tableName);
    pns = new ArrayList<String>();
    for (Iterator i = names.iterator(); i.hasNext();) {
      pns.add((String) i.next());
    }
    success = commitTransaction();
  } finally {
    if (!success) {
      rollbackTransaction();
    }
  }
  return pns;
}
 


所以,如果要修改HIVE元数据管理的功能,就可以按如下步骤操作:
1.     在\src\metastore\src\model\ package.jdo中定义新的HIVE元数据表的数据字典
2.     在org.apache.hadoop.hive.metastore.model中定义新增表的操作
3.     在org.apache.hadoop.hive.metastore. ObjectStore中新增方法处理如上定义的功能

4
1
分享到:
评论
1 楼 kaobian 2012-08-15  
楼主:问一个问题:  openTransaction();   
javax.jdo.Query q = pm.newQuery(
第一个方法和第二个 pm对象 你是如何获得的?

还有一个问题,使用上述方法是不是 可以hive 关于表的元数据 记录?

这个 应该是兼容所有 保存 元数据的 数据库,我们 只需要 类似 像用 hibernate 一样 用hsql 就ok了?

相关推荐

    hive元数据生成建表语句

    本资源“hive元数据生成建表语句”主要关注如何从已有的Hive元数据中自动生成创建表的SQL语句,以便于理解和重现现有数据表的结构。 首先,理解Hive元数据: 1. **数据库**:Hive支持多数据库的概念,每个数据库...

    hive元数据导入sql生成工具

    Hive元数据导入SQL生成工具是针对CDH4.7.0版本设计的一款实用软件,主要用于帮助用户方便地管理和操作Hive中的元数据。Hive是一个分布式数据仓库系统,它允许用户使用类SQL语言(HQL)来处理存储在Hadoop集群上的大...

    Hive metastore 使用达梦数据库存储元数据

    通常,Hive元数据默认存储在MySQL或Derby等关系型数据库中。然而,为了适应更复杂的业务需求和更高的性能,我们可以选择将Hive元数据存储在达梦数据库中。本文将详细介绍如何配置Hive metastore以使用达梦数据库。 ...

    Hive.sql,hive的元数据

    Hive.sql

    Hive元数据库操作

    Hive 元数据库操作是 Hive 运维中常用的操作之一,它提供了对元数据的管理和查询功能。在 Hive 中,元数据是指对数据的描述信息,如表名、表路径、分区信息、列信息等。下面将对 Hive 元数据库操作的常用 SQL 语句...

    Hive配置(Oracle数据库为元数据)

    ### Hive配置(Oracle数据库为元数据) #### 一、概述 Apache Hive 是一个基于 Hadoop 的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的 SQL 查询功能,可以将 SQL 语句转换为 MapReduce ...

    Hive Meta Store E-R图

    ### Apache Hive元数据E-R图解析 #### 一、引言 Apache Hive 是一个构建在 Hadoop 之上的数据仓库工具,它提供了SQL查询功能,使得处理存储在Hadoop文件系统中的大规模数据集变得简单易行。为了有效地管理这些数据...

    tencentyun#qcloud-documents#Hive元数据管理1

    1. Hive 元数据与 Druid、Superset、Hue、Ranger、Oozie、Presto 组件元数据一起存储 2. 集群需要单独购买一个 Meta

    hive元数据批量生成建表语句,含存储格式、存储位置信息;使用MSSQL的sql语言

    hive元数据批量生成建表语句,含存储格式、存储位置信息;使用MSSQL的sql语言。

    hive仓库元数据管理系统

    1.hive元数据信息的查看,包括表基本信息,数据库基本信息,字段信息,分区信息,索引信息等; 2.对hive元数据的检索,包括表、字段、数据库等内容的检索 3.元数据信息更新(目前只提供对库、表、字段的描述信息进行...

    《Hive数据仓库案例教程》教学大纲.pdf

    2. **Hive环境搭建**:这章介绍了Hive的安装、配置,包括MySQL的安装,Hive元数据的配置,以及如何使用HiveJDBC进行连接。实践环节让学生亲手操作Hive的部署,掌握配置过程。 3. **Hive基础**:本章涉及Hive的数据...

    hive数据存储模式

    上述配置指定了Hive元数据存储所需的数据库连接字符串以及驱动程序名称,以MySQL为例。 综上所述,Hive通过灵活的数据存储模式和元数据管理机制,为大规模数据分析提供了强大的支持。理解Hive的数据存储模式对于...

    导出hive元数据,迁移数据使用

    执行命令: java -cp hive-distcp-1.0-SNAPSHOT-shaded_sc.jar com.apex.distcp.HiveTable --config [库名] &gt; test.sql

    hive元数据mysql初始化导入

    通过mysql&gt; source XXXXX\hive-schema-3.1.0.mysql.sql初始化元数据

    管理系统系列--hive仓库元数据管理系统.zip

    以下是一些关于Hive元数据管理的重要知识点: 1. **元数据的概念**:元数据包括表的定义(列名、数据类型、主键、外键等)、分区信息、表的存储位置以及数据的格式等。这些信息帮助Hive解析查询并定位数据。 2. **...

    基于hive Hook的hive原数据调整

    ### 基于Hive Hook的Hive元数据调整 #### 问题背景及解决思路 在大数据处理领域,Apache Hive 是一个广泛使用的数据仓库工具,它提供了类 SQL 的查询语言 HiveQL,使得用户能够轻松地处理存储在 Hadoop 文件系统中...

    Hive学习总结及应用.pdf

    四、Hive元数据存储方式 Hive的元数据支持以下三种存储方式,其中两种属于本地存储,一种为远端存储。远端存储比较适合生产环境。 1. 使用Derby数据库存储元数据(内嵌的以本地磁盘作为存储),这称为“内嵌配置”...

    hive客户端安装_hive客户端安装_hive_

    四、配置Hive元数据存储 Hive的元数据通常存储在MySQL或 Derby 数据库中。这里我们以Derby为例: 1. 创建一个目录用于存放Derby数据库,例如:/var/lib/hive/metastore。 2. 修改Hive配置文件($HIVE_HOME/conf/hive...

    hive3.1.2+mysql驱动.zip

    1. 安装并启动MySQL服务,创建专门的数据库和用户用于Hive元数据。 2. 将"Hive 3.1.2+mysql驱动.zip"中的MySQL驱动JAR文件(通常为`mysql-connector-java.jar`)添加到Hive的类路径中。 3. 修改Hive的配置文件`hive-...

    hive-3.1.2(可供直接下载学习)

    3. Hive 元数据存储:Hive 将元数据存储在关系型数据库中,如 MySQL、PostgreSQL 等。4. Hive 的命令行工具和 API:Hive 提供了一个命令行工具和 API,方便用户进行数据查询和处理。5. Hive 的 MapReduce 任务:Hive...

Global site tag (gtag.js) - Google Analytics