有没有办法使用获取hive表的hdfs位置 Java jdbc。
例如:
我有一个临时表t1。 在位置' / user / tables_list / t1';
我想使用java代码检索此位置。
答案 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中检索的表对象。