• HIVE元数据表/数据字典


     HIVE元数据表/数据字典

    0人收藏此文章, 我要收藏

    表名

    说明

    BUCKETING_COLS

    Hive表CLUSTERED BY字段信息(字段名,字段序号)

    COLUMNS

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

    DBS

     

    NUCLEUS_TABLES

    元数据表和hive中class类的对应关系

    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

    Hive表SORTED 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中的表结构为:
    Sql代码    收藏代码
    1. mysql> desc TBLS;  
    2. +--------------------+--------------+------+-----+---------+-------+  
    3. | Field              | Type         | Null | Key | Default | Extra |  
    4. +--------------------+--------------+------+-----+---------+-------+  
    5. | TBL_ID             | bigint(20)   | NO   | PRI | NULL    |       |  
    6. | CREATE_TIME        | int(11)      | NO   |     | NULL    |       |  
    7. | DB_ID              | bigint(20)   | YES  | MUL | NULL    |       |  
    8. | LAST_ACCESS_TIME   | int(11)      | NO   |     | NULL    |       |  
    9. | OWNER              | varchar(767) | YES  |     | NULL    |       |  
    10. | RETENTION          | int(11)      | NO   |     | NULL    |       |  
    11. | SD_ID              | bigint(20)   | YES  | MUL | NULL    |       |  
    12. | TBL_NAME           | varchar(128) | YES  | MUL | NULL    |       |  
    13. | VIEW_EXPANDED_TEXT | mediumtext   | YES  |     | NULL    |       |  
    14. | VIEW_ORIGINAL_TEXT | mediumtext   | YES  |     | NULL    |       |  
    15. | TBL_TYPE           | varchar(128) | YES  |     | NULL    |       |  
    16. +--------------------+--------------+------+-----+---------+-------+  
     
    在package.jdo里的定义为:
    Java代码    收藏代码
    1. <<strong><span style="color: #0000ff;">class name="MTable"</span></strong> <strong><span style="color: #ff0000;">table="TBLS"</span></strong> identity-type="datastore" detachable="true">  
    2.   <datastore-identity>  
    3.     <column name="TBL_ID"/>  
    4.   </datastore-identity>  
    5.   <index name="UniqueTable" unique="true">  
    6.     <column name="TBL_NAME"/>  
    7.     <column name="DB_ID"/>  
    8.   </index>  
    9.   <field name="tableName">  
    10.     <column name="TBL_NAME" length="128" jdbc-type="VARCHAR"/>  
    11.   </field>  
    12.   <field name="database">  
    13.     <column name="DB_ID"/>  
    14.   </field>  
    15.   <field name="sd" dependent="true">  
    16.     <column name="SD_ID"/>  
    17.   </field>  
    18.   <field name="owner">  
    19.     <column name="OWNER" length="767" jdbc-type="VARCHAR"/>  
    20.   </field>  
    21.   <field name="createTime">  
    22.     <column name="CREATE_TIME" jdbc-type="integer"/>  
    23.   </field>  
    24.   <field name="lastAccessTime">  
    25.     <column name="LAST_ACCESS_TIME" jdbc-type="integer"/>  
    26.   </field>  
    27.   <field name="retention">  
    28.     <column name="RETENTION" jdbc-type="integer"/>  
    29.   </field>  
    30.   <field name="viewOriginalText">  
    31.     <column name="VIEW_ORIGINAL_TEXT" jdbc-type="LONGVARCHAR"/>  
    32.   </field>  
    33.   <field name="viewExpandedText">  
    34.     <column name="VIEW_EXPANDED_TEXT" jdbc-type="LONGVARCHAR"/>  
    35.   </field>  
    36.   <field name="tableType">  
    37.     <column name="TBL_TYPE" length="128" jdbc-type="VARCHAR"/>  
    38.   </field>  
    39. </class>  
     
    表名为:TBLS;对应的类为:org.apache.hadoop.hive.metastore.model. MTable,TBLS的所有操作都在此类中定义。
    操作: 
    org.apache.hadoop.hive.metastore. ObjectStore 
    定义了如何获取元数据,如何写入元数据,其实全部是调用javax.jdo中各个类的方法。 
    以listPartitionNames为例:
    Java代码    收藏代码
    1. public List<String> listPartitionNames(String dbName, String tableName,  
    2.     short max) throws MetaException {  
    3.   List<String> pns = new ArrayList<String>();  
    4.   boolean success = false;  
    5.   try {  
    6.     openTransaction();  
    7.     LOG.debug("Executing getPartitionNames");  
    8.     dbName = dbName.toLowerCase().trim();  
    9.     tableName = tableName.toLowerCase().trim();  
    10.     javax.jdo.Query q = pm.newQuery(  
    11.         "select partitionName from org.apache.hadoop.hive.metastore.model.MPartition "  
    12.         + "where table.database.name == t1 && table.tableName == t2 "  
    13.         + "order by partitionName asc");  
    14.     q.declareParameters("java.lang.String t1, java.lang.String t2");  
    15.     q.setResult("partitionName");  
    16.     Collection names = (Collection) q.execute(dbName, tableName);  
    17.     pns = new ArrayList<String>();  
    18.     for (Iterator i = names.iterator(); i.hasNext();) {  
    19.       pns.add((String) i.next());  
    20.     }  
    21.     success = commitTransaction();  
    22.   } finally {  
    23.     if (!success) {  
    24.       rollbackTransaction();  
    25.     }  
    26.   }  
    27.   return pns;  
    28. }  
     


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

  • 相关阅读:
    Augular JS里的各种ng-
    JS笔记1
    JQuery实战学习--在dreamweaver 8中配置Jquery自动提示
    android 设置桌面背景图片适应屏幕大小
    canvas实现进度条!
    Javascript之Prototype
    Sql Server 之 for xml (path,raw,auto,root)
    MVC 知识点学习3(linq to sql)
    MVC 知识点学习2
    MVC 知识点学习1
  • 原文地址:https://www.cnblogs.com/java20130722/p/3206991.html
Copyright © 2020-2023  润新知