gpt4 book ai didi

java - 需要使用 Jdbc 程序访问 Hive 元数据表

转载 作者:可可西里 更新时间:2023-11-01 14:31:44 31 4
gpt4 key购买 nike

需要使用 Jdbc 程序访问 Hive 元数据表。Metastore 到底存储了什么,我如何访问它?

我试过这样做:

    sql="show tables";
Statement stmt = con.createStatement();

System.out.println("Running: " + sql);
res = stmt.executeQuery(sql);
while (res.next()) {
System.out.println(res.getString(1));
}

所以我得到了表列表,但我想知道该信息存储在哪个表中,以便我可以直接从该表中选择而不是触发 Hive 命令。

我的 Metastore 也是在 PostGreSQL 中配置的。(如果有帮助的话!)谢谢希兹

最佳答案

您可以通过 JDBC 查询 Metastore DB。
例如:列出表名及其在 HDFS 上的位置:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hive.conf.HiveConf;
import org.apache.hadoop.hive.conf.HiveConf.ConfVars;

public class HiveMetastoreJDBCTest {

public static void main(String[] args) throws Exception {

Connection conn = null;
try {
HiveConf conf = new HiveConf();
conf.addResource(new Path("file:///path/to/hive-site.xml"));
Class.forName(conf.getVar(ConfVars.METASTORE_CONNECTION_DRIVER));
conn = DriverManager.getConnection(
conf.getVar(ConfVars.METASTORECONNECTURLKEY),
conf.getVar(ConfVars.METASTORE_CONNECTION_USER_NAME),
conf.getVar(ConfVars.METASTOREPWD));

Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(
"select t.tbl_name, s.location from tbls t " +
"join sds s on t.sd_id = s.sd_id");
while (rs.next()) {
System.out.println(rs.getString(1) + " : " + rs.getString(2));
}
}
finally {
if (conn != null) {
conn.close();
}
}

}
}

exists关于 Metastore 的 ER 图,但它可能不是最新的,因此我建议你运行 metastore DDL script (Hive 0.12),在测试中模式,并从这些表中创建新的 ER 图。 (例如 PowerArchitect )

关于java - 需要使用 Jdbc 程序访问 Hive 元数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21131461/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com