0

我正在使用 HiveMetaStoreClient 获取配置单元表的一些元数据,并且我将一些表保存为镶木地板,而其他表保存为文本。对于另存为镶木地板的表,我想获取更多信息,例如镶木地板架构。

那么如何通过 HiveMetaStoreClient 获取 hive 表的文件格式呢?或者如果有任何其他接口可以做到这一点?

我在想也许我可以尝试使用 ParquetReader 读取每个表并捕获异常。喜欢:

try {
    metaData = ParquetFileReader.readFooter(conf, file, NO_FILTER);
    MessageType schema = metaData.getFileMetaData().getSchema();
} catch (Exception e) {
    System.out.println("Not parquet!!!")
}

但这似乎是最糟糕的选择。

4

2 回答 2

1

您有多种选择。

  1. 利用SHOW CREATE TABLE <tablename>

  2. 利用DESCRIBE FORMATTED <tablename>

  3. 您可以使用为 Hadoop 用户提供 Web GUI 的hue 。

  4. 如果您也为 UI 设置了 namenode,您可以访问详细信息甚至浏览文件。url一般为http://:50070。它没有显示有关该表的很多详细信息。它用于整体hadoop。

于 2020-02-04T09:30:43.337 回答
0

我通过在 Hive 会话中运行“SHOW CREATE TABLE”来做到这一点,结果您将看到该表的 CREATE 语句,其中包含文件格式详细信息。它看起来像下面这样,

ROW FORMAT SERDE 
      'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' 
STORED AS INPUTFORMAT 
      'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat' 
OUTPUTFORMAT 
      'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'

让我知道这是否是您要找的东西!

于 2019-04-03T08:40:22.980 回答