HIVE元数据,
HIVE元数据表数据字典:
|
表名
|
说明
|
|
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代码
-
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里的定义为:
Java代码
-
<<strong><span style="color: #0000ff;">class name="MTable"</span></strong> <strong><span style="color: #ff0000;">table="TBLS"</span></strong> 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为例:
Java代码
-
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中新增方法处理如上定义的功能
http://www.htsjk.com/hive/34428.html
www.htsjk.Com
true
http://www.htsjk.com/hive/34428.html
NewsArticle
HIVE元数据, HIVE元数据表数据字典: 表名 说明 BUCKETING_COLS Hive 表CLUSTERED BY字段信息(字段名,字段序号) COLUMNS Hive 表字段信息(字段注释,字段名,字段类型,字段序号) DBS NUCLEUS_TAB...
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。