MRS二次开发(6/27): Hive的JDBC接口调用样例

举报
晋红轻 发表于 2020/11/28 09:59:39 2020/11/28
【摘要】 Hive是一个开源的,建立在Hadoop上的数据仓库框架,提供类似SQL的HQL语言操作结构化数据,其基本原理是将HQL语言自动转换成Mapreduce任务或Spark任务,从而完成对Hadoop集群中存储的海量数据进行查询和分析。本文介绍Hive的JDBC接口调用样例。

MRS二次开发(6/27): HiveJDBC接口调用样例

一、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>

 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。