使用java检索配置单元表位置

z0qdvdin  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(306)

有没有一种方法可以使用javajdbc检索hive表的hdfs位置。
例如:
我有一张临时table。在位置'/user/tables_list/t1';
我想用java代码检索这个位置。

wixjitnu

wixjitnu1#

据我所知,没有直接的方法。但是,一旦设置了jdbc连接,就可以执行“describe extended”,它(在我做的测试中)将列出以下表列:

res = stmt.executeQuery("DESCRIBE EXTENDED tweets");
while(res.next()){
    System.out.println(res.getString(1));
}

但是,对于最后一行,您需要使用:

res.getString(2)

这将为您提供需要解析的详细表描述,但在其中的某个位置有一个location字段

location:hdfs://localhost:8020/user/hive/warehouse/social.db/tweets

问题是,这需要大量的手工操作,因为方法如下:

res.last()

或者

res.isLast()

不支持,他们会有很大的帮助。

yr9zkbsy

yr9zkbsy2#

我也有同样的要求,我使用了hivemetastoreclient api,它使输入变得简单:

srcTable.getSd().getLocation();

srctable应该是通过提供表规范从配置单元元存储中检索的表对象。

相关问题