使用Java检索Hive表位置

时间:2014-06-12 14:22:20

标签: java hadoop jdbc hive

有没有办法使用获取hive表的hdfs位置 Java jdbc。

例如:

我有一个临时表t1。 在位置' / user / tables_list / t1';

我想使用java代码检索此位置。

2 个答案:

答案 0 :(得分:0)

据我所知,没有直接的方法可以做到这一点。但是,一旦你设置了JDBC连接,就可以执行一个" DESCRIBE EXTENDED",(在我做的测试中)会列出表列:

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

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

res.getString(2)

它会为您提供一个您需要解析的详细表格说明,但在那里某处有一个位置字段

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

问题在于,这是很多手工,因为方法如:

res.last()

res.isLast()

不受支持,他们会提供很多帮助。

答案 1 :(得分:-1)

我有相同的要求,我使用了HiveMetaStoreClient API,它就像打字一样简单:

srcTable.getSd().getLocation();

srcTable应该是通过给出表规范从Hive Metastore中检索的表对象。