java - 获取 JDBC ResultSet 元数据中没有表名的 Hive 列名

标签 java jdbc hive

我正在尝试从 ResultSet 的元数据中获取列的名称,但在 Hive 中,如果采用 table_name.column_name 的形式,我会获取列名称,并且我只想拥有 column_name (类似于我从 MySQL 获得的信息)。这可能吗?

最佳答案

是的,这是可能的。 有两种方法可以实现:

1.) 使用 Hive JDBC 连接(您正在寻找)。

2.) 使用 HiveMetastoreClient。

以下是上述两种方法的代码片段:

第一种方法:

ResultSet resultSet = <custom_class_for_hive_jdbc_connector>.executeQuery("DESCRIBE <TABLE_NAME>");
ResultSetMetaData metaData = resultSet.getMetaData();
while (resultSet.next()) {

System.out.println(" Column names : "+resultSet.getString(metaData.getColumnName(1)));

}

在这种方法中,我们需要创建一个结果集元数据对象,并使用该对象我们可以获得查询输出的详细信息。在你的情况下“描述表格”

第二种方法:

HiveMetaStoreClient metastoreClient = null;
HiveConf hiveConf = new HiveConf();         
metastoreClient = new HiveMetaStoreClient(hiveConf);
List<FieldSchema> list = metastoreClient.getFields(<database_name>,<table_name>);   
for (int i = 0; i < list.size(); i++) {
    System.out.println("Column names : "+list.get(i).getName());        
}                   
metastoreClient.close();

在这种方法中,我们不运行任何查询,我们只是连接到 HiveMetastore,然后从那里获取给定数据库下给定表的详细信息。

希望有帮助......!!!

关于java - 获取 JDBC ResultSet 元数据中没有表名的 Hive 列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29051116/

相关文章:

hadoop - 缺少 Hive 执行 Jar Hadoop

hadoop - 加入两个表并在配置单元的新表中插入值

java - Maven 无法转换为 javax.servlet.Filter

java.lang.ClassNotFoundException : org. apache.xmlbeans.XmlObject 错误

java - 在 Java 中检索 MySQL 自动增量

java - Oracle Express 数据库通过 JDBC 使用 UCP(通用连接池)

java - 对 JSF-Seam Web 应用程序页面进行 GZIP 的最佳方法是什么

java - 如何获取 JAVA 中的真实类型/mime 类型(如 PHP 中的 finfo\mime_content_type)?

java - JDBC字符串中的Mysql session 变量

hadoop - 即使从 hdfs 删除后,Hive 如何读取数据?