Hive通过Jdbc连接HiveServer2
时间:2022-07-24
本文章向大家介绍Hive通过Jdbc连接HiveServer2,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Hive 版本:2.3.7
1. 配置
如果想通过 JDBC 来访问 HiveServer2,需要开启 HiveServer2 服务,具体请参阅 如何启动HiveServer2。
2. URL格式
JDBC客户端允许使用 Java 代码连接到 HiveServer2。可以在远程,嵌入式或 HTTP 模式下建立 JDBC 连接。以下是不同模式的配置:
- 远程模式下 Url 格式为
jdbc:hive2://<host>:<port>/<database>
,默认情况下 HiveServer2 的端口为 10000。 - 内嵌模式下 Url 格式为
jdbc:hive2://
,不需要提供主机与端口号。 - 如果 HiveServer2 以 http 模式运行,Url 格式为
jdbc:hive2://<host>:<port>/<db>? hive.server2.transport.mode=http;hive.server2.thrift.http.path= <http_endpoint>
, 在 hive-site.xml 配置文件中进行配置,默认值为 cliservice。HTTP 传输模式的默认端口为 10001。
3. Maven 依赖
如果你使用的是 Maven,需要在 pom.xml 中添加以下依赖项:
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>2.3.7</version>
</dependency>
4. 开发
第一步加载 JDBC 驱动类:
Class.forName("org.apache.hive.jdbc.HiveDriver");
第二步通过使用 JDBC 驱动创建 Connection 对象来连接到数据库:
Connection conn = DriverManager.getConnection("jdbc:hive2://<host>:<port>/<database>","<user>","<password>");
默认情况下端口为 10000,如果 HiveServer2 在非安全环境中运行,密码可以忽略不写:
Connection conn = DriverManager.getConnection("jdbc:hive2://127.0.0.1:10000/default","hadoop","");
第三步通过执行如下代码来执行查询:
Statement stmt = conn.createStatement();
ResultSet resultSet = stmt.executeQuery("SELECT * FROM tmp_table");
最后一步处理 ResultSet 返回的结果:
int columns= resultSet.getMetaData().getColumnCount();
int rowIndex = 1;
while (resultSet.next()) {
for(int i = 1;i <= columns; i++) {
System.out.println("RowIndex: " + rowIndex + ", ColumnIndex: " + i + ", ColumnValue: " + resultSet.getString(i));
}
}
详细代码请参阅:JdbcExample
5. JDBC数据类型
下表为 HiveServer2 列出了 Hive数据类型与 Java 数据类型之间的映射关系:
- 2018春节抢票攻略:不仅仅是12306微信小程序启用
- Android新手之旅(9) 自定义的折线图
- Android新手之旅(11) 在现有页面中插入新的view
- Docker容器学习梳理--容器间网络通信设置(Pipework和Open vSwitch)
- 温故而知新:Asp.Net中如何正确使用Session
- Android新手之旅(13) listview中数据重复的问题
- 温故而知新:HttpApplication,HttpModule,HttpContext及Asp.Net页生命周期
- proxy_pass反向代理配置中url后面加不加/的说明
- Android新手之旅(10) 嵌套布局
- C#代码也VB
- Docker容器学习梳理--SSH方式登陆容器
- Docker网络解决方案-Flannel部署记录
- Nginx的location配置规则梳理
- 统计代码行数的方法梳理
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 自然语言处理中的预训练模型(上)
- numpy数组中冒号和负号的含义
- 基于R语言实现LASSO回归分析
- PHP预防XSS攻击,ajax跨域攻击的方法
- PHP中利用header设置content-type和常见文件类型的content-type
- 《剑指 offer》刷题记录之:递归和循环
- PHP缓存技术介绍
- R语言画ROC曲线总结
- PHP中$_SERVER的详细参数
- R语言使用贝叶斯层次模型进行空间数据分析
- PHP中的小数取整
- PHP中文获取拼音函数
- PHP5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
- PHP获取中文拼音首字符方法
- PHP_MySQL笔试题目一