使用hive客户端java api读写hive集群上的信息
Posted 扎心了老铁
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用hive客户端java api读写hive集群上的信息相关的知识,希望对你有一定的参考价值。
上文介绍了hdfs集群信息的读取方式,本文说hive
1、先解决依赖
<properties> <hive.version>1.2.1</hive.version> </properties> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-exec</artifactId> <version>${hive.version}</version> <scope>provided</scope> </dependency>
2、配置文件
这里我们给出一种简单的配置方法,就是直接将hive-site.xml通过添加文件的方式加载到配置
例如,hive-site.xml中的配置如下
<configuration> <property> <name>hive.metastore.uris</name> <value>thrift://10.91.64.23:9083,thrift://10.91.64.23:9083,thrift://10.91.64.23:9083</value> </property> </configuration>
3、hive client api
说明:
1、hiveConf.addResource("hive-site.xml") 可以直接把配置文件加载到配置
2、hive的api很丰富,下面只介绍了其中一部分,如果用到其他再进行封装即可
package com.xiaoju.dqa.prometheus.client.hive; import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.metastore.IMetaStoreClient; import org.apache.hadoop.hive.metastore.RetryingMetaStoreClient; import org.apache.hadoop.hive.metastore.api.Database; import org.apache.hadoop.hive.metastore.api.FieldSchema; import org.apache.hadoop.hive.metastore.api.MetaException; import org.apache.thrift.TException; import org.slf4j.Logger; import java.util.List; public class HiveClient { protected final Logger logger = org.slf4j.LoggerFactory.getLogger(this.getClass()); IMetaStoreClient client; public HiveClient() { try { HiveConf hiveConf = new HiveConf(); hiveConf.addResource("hive-site.xml"); client = RetryingMetaStoreClient.getProxy(hiveConf); } catch (MetaException ex) { logger.error(ex.getMessage()); } } public List<String> getAllDatabases() { List<String> databases = null; try { databases = client.getAllDatabases(); } catch (TException ex) { logger.error(ex.getMessage()); } return databases; } public Database getDatabase(String db) { Database database = null; try { database = client.getDatabase(db); } catch (TException ex) { logger.error(ex.getMessage()); } return database; } public List<FieldSchema> getSchema(String db, String table) { List<FieldSchema> schema = null; try { schema = client.getSchema(db, table); } catch (TException ex) { logger.error(ex.getMessage()); } return schema; } public List<String> getAllTables(String db) { List<String> tables = null; try { tables = client.getAllTables(db); } catch (TException ex) { logger.error(ex.getMessage()); } return tables; } public String getLocation(String db, String table) { String location = null; try { location = client.getTable(db, table).getSd().getLocation(); }catch (TException ex) { logger.error(ex.getMessage()); } return location; } }
以上是关于使用hive客户端java api读写hive集群上的信息的主要内容,如果未能解决你的问题,请参考以下文章
使用Spark实现推主机群Hive数据到租户集群Hive的高性能Hive2Hive数据集成Java需编写JDBC连接Hive解析元数据
使用Spark实现推主机群Hive数据到租户集群Hive的高性能Hive2Hive数据集成Java需编写JDBC连接Hive解析元数据