MRS二次开发(6/27): Hive的JDBC接口调用样例
MRS二次开发(6/27): Hive的JDBC接口调用样例
一、Hive简介
Hive简介
Hive是一个开源的,建立在Hadoop上的数据仓库框架,提供类似SQL的HQL语言操作结构化数据,其基本原理是将HQL语言自动转换成Mapreduce任务或Spark任务,从而完成对Hadoop集群中存储的海量数据进行查询和分析。
Hive主要特点如下:
- 通过HQL语言非常容易的完成数据提取、转换和加载(ETL)。
- 通过HQL完成海量结构化数据分析。
- 灵活的数据存储格式,支持JSON、CSV、TEXTFILE、RCFILE、ORCFILE、SEQUENCEFILE等存储格式,并支持自定义扩展。
- 多种客户端连接方式,支持JDBC接口。
Hive的主要应用于海量数据的离线分析(如日志分析,集群状态分析)、大规模的数据挖掘(用户行为分析,兴趣分区,区域展示)等场景下。
为保证Hive服务的高可用性、用户数据的安全及访问服务的可控制,在开源社区的Hive-3.1.0版本基础上,Hive新增如下特性:
- 基于Kerberos技术的安全认证机制。
- 数据文件加密机制。
- 完善的权限管理。
新增特性的介绍,请参见《MapReduce Service 3.0.2-ESL 产品描述》相关章节。开源社区的Hive特性,请参见https://cwiki.apache.org/confluence/display/hive/designdocs。
二、样例背景
场景说明
假定用户开发一个应用程序, 使用通用JDBC接口调用Hive,代码样例中所涉及的操作主要包括:
拼接jdbc连接url
加载jdbc驱动
获取jdbc连接
相关操作
三、Windows环境样例调用步骤
环境准备,参考第一课
比对时间,与集群时间误差不能超过5分钟
检查 C:\Windows\System32\drivers\etc\hosts文件中是否包含所有集群节点的域名IP映射信息
在IDEA打开样例代码中的hive-jdbc-example目录,默认会自动下载依赖,如未下载,选中该目录下的pom.xml文件,右键点击“Add As Maven Project”后等待项目自动将依赖下载完毕
从Manager界面下载用户认证凭据后,解压缩获取秘钥文件user.keytab和krb5.conf,将这两个文件放到工程resources/conf目录下
修改配置文件hiveclient.properties,user.hive.jaas.conf
右键选择resources目录,选择“Mark Directory as”-"Resources Root"
在代码中修改认证用户名
打开 JDBCExample.java 文件右键执行Run 启动样例代码
四、Linux环境调试步骤
完成Windows环境样例调用步骤
检查linux环境时间与集群误差不超过5分钟
检查linux环境的JDK版本为1.8
检查linux环境的/etc/hosts文件中包含所有集群节点的域名IP映射信息
创建样例执行路径,例如/opt/hivejdbctest
上传windows环境打包后生成的target目录下的hive-jdbc-example-1.0-SNAPSHOT.jar包到/opt/hivejdbctest目录
在IDEA中使用插件生成依赖路径lib,上传至/opt/hivejdbctest
创建配置文件目录,比如/opt/src/main/resources,将配置文件放入此目录
执行如下命令验证linux环境下样例代码运行
- java -cp /opt/hive_jdbc_test/lib/*:/opt/hive_jdbc_test/hive-jdbc-example-1.0-SNAPSHOT.jar com.huawei.bigdata.hive.example.JDBCExample
五、问题互动渠道
FusonInsight 论坛入口 https://bbs.huaweicloud.com/forum/forum-1103-1.html
六、附录
生成依赖路径的pom.xml文件配置
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
- 点赞
- 收藏
- 关注作者
评论(0)