使用 Java API 从 Hive 中获取 Table 属性

Get Table Properties out of Hive using Java API

我正在尝试使用 java 中的 Metastore 客户端从 Hive Metastore 中获取 table 属性,例如 table 数据库、名称、所有者和 hdfs 位置。我想我可以获取 table 数据库和名称,但我不知道如何获取所有者和 hdfs 位置等信息。可能吗?我已经在文档和互联网上搜索了几个小时,但一无所获。

如果是分区的table,你可以做一个:

描述格式化的 table 分区(partition_name=partition_value).

它将显示底层的 hdfs 路径和 table 的所有者。

我 运行 在我的装有 Cloudera CDH 5.1.0 的虚拟机上执行以下命令

$ hive -e "describe extended tablename"

此命令的输出提供除表名、数据库名、所有者、创建时间、位置之外的信息。您也可以参考以下CWIKIlink了解更多详情

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-Describe

可能是这样的:

org.apache.hadoop.hive.metastore.api.Table table=..........;
org.apache.hadoop.hive.metastore.api.StorageDescriptor sd=table.getSd();
String loc=sd.getLocation();
String own=sd.getOwner();

https://hive.apache.org/javadocs/r1.2.2/api/org/apache/hadoop/hive/metastore/api/Table.html https://hive.apache.org/javadocs/r1.2.2/api/org/apache/hadoop/hive/metastore/api/StorageDescriptor.html