使用hive客户端java api读写hive集群上的信息
时间:2022-05-02
本文章向大家介绍使用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;
}
}
- Go中调用dll示例
- python 序列化数据:pickle与json ,dumps与loads
- golang继承,和多态
- python 利用random生成验证码与MD5码加密过程
- Java内部类的继承
- Java继承类中static成员函数的重写
- Search for a range寻找上下界-Leetcode
- Basic Calculator 基本计算器-Leetcode
- python yield函数深入浅出理解
- 十分钟搞定 Tensorflow 服务
- datapump跨平台升级迁移的总结 (r8笔记第77天)
- Java中isAssignableFrom()方法与instanceof()方法用法
- 与Ajax同样重要的jQuery(1)
- Java中Class类详解、用法及泛化
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Android中Handler与Message的简单实例
- Android 实现通知消息水平播放、无限循环效果
- 详解xamarin Android 实现ListView万能适配器
- android 设置wallpaper的操作方法
- R语言作图不显示中文解决办法,如何使用中文字体
- Android OKHTTP的单例和再封装的实例
- Android 自定义返回按钮的实例详解
- Android在layout xml中使用ViewStub完成动态加载问题
- Android编程中Intent实现页面跳转功能详解
- Android编程之桌面小部件AppWidgetProvider用法示例
- Android编程实现悬浮窗获取并显示当前内存使用量的方法
- Android ListView中动态添加RaidoButton的实例详解
- Android沉浸式状态栏设计的实例代码
- Android编程使用LinearLayout和PullRefreshView实现上下翻页功能的方法
- R语言使用bootstrap和增量法计算广义线性模型(GLM)预测置信区间