mysql最新版本的jdbc连接hive_通过jdbc连接hive

本文档详细介绍了如何使用mysql最新版本的jdbc连接到hive,包括搭建hiveserver2服务器、配置kerberos认证,以及解决连接过程中遇到的问题。通过kerberos认证和jdbc建立连接,成功实现了对hive的SQL接口访问。
摘要由CSDN通过智能技术生成

1 mammut@classb-ds-bigdata16:~/apache-hive-1.2.1-bin$ bin/hive2 Logging initialized using configuration in /home/mammut/apache-hive-0.13.1-bin/conf/hive-log4j.properties.self3 Hive history file=/tmp/mammut/hive_job_log_21e28d9e-7756-402e-b0d2-242f4ceef095_1602622773.txt4 hive>

b、将hive作为一个可以提供SQL接口的数据库来使用,这样可以通过jdbc连接

这里就是对第二种方式做一下整理和记录,在实现的过程中,遇到了一些问题,解决的过程中也顺带学习了一些概念和方法。

分解成各个子模块后,主要是下面几点:

1、搭建hiveserver2服务器

2(可选)、认证方式为kerberos认证,则需要配置相应的kerberos

3、代码实现:

a、认证kerberos

b、建立jdbc连接

4、验证结果

一、搭建hiveserver2服务器:

a、分别设置hiveclient中的hive-site.xml中:warehouse路径、jdbc(metastore)为mysql以及相应连接方式、用户名密码    ---这几个是hive-client搭建必须的配置

b、设置hiveserver2的配置,配置认证方式为kerberos,keytab为一个有代理权限的keytab和相应principal(这里选择代理权限的keytab,1是因为hiveserver2是个代理服务器,2是为了方便多个不同用户通过jdbc连接时,可以通过代理拥护代理执行,否则一个普通用户访问会有如下错误)

1 16/03/02 17:32:33[main]: ERROR transport.TSaslTransport: SASL negotiation failure2 javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Server not found in Kerberos database (7) -UNKNOWN_SERVER)]3 at com.sun.security.sasl.gsskerb.GssKrb5Client.evaluateChallenge(GssKrb5Client.java:212)4 at org.apache.thrift.transport.TSaslClientTransport.handleSaslStartMessage(TSaslClientTransport.java:94)5 at org.apache.thrift.transport.TSaslTransport.open(TSaslTransport.java:253)6 at org.apache.thrift.transport.TSaslClientTransport.open(TSaslClientTransport.java:37)7 at org.apache.hadoop.hive.thrift.client.TUGIAssumingTransport$1.run(TUGIAssumingTransport.java:52)8 at org.apache.hadoop.hive.thrift.client.TUGIAssumingTransport$1.run(TUGIAssumingTransport.java:49)9 at java.security.AccessController.doPrivileged(Native Method)

c、设置hiveserver2的port和host(host设置成0.0.0.0,来接收未知来源的ip):

hive.server2.thrift.port

10000

Port number of HiveServer2 Thrift interface.

Can be overridden by setting $HIVE_SERVER2_THRIFT_PORT

hive.server2.thrift.bind.host

MySQLHive 都是数据存储和处理的工具,但它们各自擅长不同的场景。MySQL 是一个关系型数据库,适合处理结构化的实时数据,而 Hive 则是一个基于 Hadoop 的数据仓库系统,通常用于大规模的数据分析,使用 SQL 风格的查询语言(HiveQL)。 如果你想从 MySQL 连接Hive,主要是为了在 MySQL 中使用 SQL 查询大规模的 Hive 数据集,或者将 Hive 的结果导入到 MySQL 中进行进一步处理,你可以采取以下步骤: 1. **安装和配置**: - 安装 JDBC 驱动:MySQL 提供了 JDBC 驱动,Hive 也有自己的 JDBC 驱动,你需要下载并配置到你的应用程序中。 - 在 Hive 配置文件 `core-site.xml` 中,配置 `javax.jdo.option.ConnectionURL` 为 `jdbc:mysql://your_mysql_host:port/your_db?useSSL=false`,其中替换为实际的 MySQL 服务器信息。 2. **创建连接**: 使用 Java 或其他支持 JDBC 的编程语言,创建一个连接MySQLHive连接对象。例如,使用 Java 代码如下: ```java String mysqlUrl = "jdbc:mysql://localhost:3306/mydatabase"; String hiveUrl = "jdbc:hive2://your_hive_host:10000/default;principal=hive/your_username@your_domain"; Connection mysqlConn = DriverManager.getConnection(mysqlUrl); Connection hiveConn = DriverManager.getConnection(hiveUrl); ``` 3. **执行查询**: 在连接上执行 SQL 查询,比如从 Hive 查询数据到 MySQL: ```java Statement mysqlStmt = mysqlConn.createStatement(); Statement hiveStmt = hiveConn.createStatement(HiveConf.getConfiguration()); ResultSet rs = mysqlStmt.executeQuery("SELECT * FROM your_mysql_table"); // 将 Hive 查询结果写入 MySQL 或转换为 ResultSet ``` 4. **数据交互**: 可能需要进行数据复制或数据提取,你可以使用 INSERT INTO SELECT 或者使用 Hive 的外部表功能,将 Hive 结果作为 MySQL 的源数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值