有没有一种方法可以使用javajdbc检索hive表的hdfs位置。例如:我有一张临时table。在位置'/user/tables_list/t1';我想用java代码检索这个位置。
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()
不支持,他们会有很大的帮助。
yr9zkbsy2#
我也有同样的要求,我使用了hivemetastoreclient api,它使输入变得简单:
srcTable.getSd().getLocation();
srctable应该是通过提供表规范从配置单元元存储中检索的表对象。
2条答案
按热度按时间wixjitnu1#
据我所知,没有直接的方法。但是,一旦设置了jdbc连接,就可以执行“describe extended”,它(在我做的测试中)将列出以下表列:
但是,对于最后一行,您需要使用:
这将为您提供需要解析的详细表描述,但在其中的某个位置有一个location字段
问题是,这需要大量的手工操作,因为方法如下:
或者
不支持,他们会有很大的帮助。
yr9zkbsy2#
我也有同样的要求,我使用了hivemetastoreclient api,它使输入变得简单:
srctable应该是通过提供表规范从配置单元元存储中检索的表对象。