调测Hive HCatalog样例程序
Hive HCatalog应用程序支持在安装Hive和Yarn客户端的Linux环境中运行。在程序代码完成开发后,您可以上传Jar包至准备好的Linux运行环境中运行。
前提条件
- 已安装Hive和Yarn客户端。
- 当客户端所在主机不是集群中的节点时,需要在客户端所在节点的hosts文件中设置主机名和IP地址映射。主机名和IP地址请保持一一对应。
操作步骤
- 在IntelliJ IDEA主界面右侧,单击“Maven Projects”,在“Maven Projects”界面执行“项目名称 > Lifecycle”目录下的“clean”和“compile”脚本。
- 在IDEA界面左下方找到Terminal,单击进入终端,执行mvn clean install进行编译
当输出“BUILD SUCCESS”,表示编译成功,如下图所示。编译成功后将会在样例工程的target下生成含有“hcatalog-example-*.jar”包。
以上jar包名称仅供参考,具体名称以实际生成为主。
- 将2中在样例工程下的target下生成的“hcatalog-example-*.jar”上传至Linux的指定路径,例如“/opt/hive_client”,记作“$HCAT_CLIENT”,并确保已经安装好Hive和Yarn客户端。运行环境变量使HCAT_CLIENT生效。
export HCAT_CLIENT=/opt/hive_client
- 执行以下命令用于配置环境变量信息(以客户端安装路径为“/opt/client”为例):
export HADOOP_HOME=/opt/client/HDFS/hadoop export HIVE_HOME=/opt/client/Hive/Beeline export HCAT_HOME=$HIVE_HOME/../HCatalog export LIB_JARS=$HCAT_HOME/lib/hive-hcatalog-core-xxx.jar,$HCAT_HOME/lib/hive-metastore-xxx.jar,$HCAT_HOME/lib/hive-standalone-metastore-xxx.jar,$HIVE_HOME/lib/hive-exec-xxx.jar,$HCAT_HOME/lib/libfb303-xxx.jar,$HCAT_HOME/lib/slf4j-api-xxx.jar,$HCAT_HOME/lib/jdo-api-xxx.jar,$HCAT_HOME/lib/antlr-runtime-xxx.jar,$HCAT_HOME/lib/datanucleus-api-jdo-xxx.jar,$HCAT_HOME/lib/datanucleus-core-xxx.jar,$HCAT_HOME/lib/datanucleus-rdbms-fi-xxx.jar,$HCAT_HOME/lib/log4j-api-xxx.jar,$HCAT_HOME/lib/log4j-core-xxx.jar,$HIVE_HOME/lib/commons-lang-xxx.jar export HADOOP_CLASSPATH=$HCAT_HOME/lib/hive-hcatalog-core-xxx.jar:$HCAT_HOME/lib/hive-metastore-xxx.jar:$HCAT_HOME/lib/hive-standalone-metastore-xxx.jar:$HIVE_HOME/lib/hive-exec-xxx.jar:$HCAT_HOME/lib/libfb303-xxx.jar:$HADOOP_HOME/etc/hadoop:$HCAT_HOME/conf:$HCAT_HOME/lib/slf4j-api-xxx.jar:$HCAT_HOME/lib/jdo-api-xxx.jar:$HCAT_HOME/lib/antlr-runtime-xxx.jar:$HCAT_HOME/lib/datanucleus-api-jdo-xxx.jar:$HCAT_HOME/lib/datanucleus-core-xxx.jar:$HCAT_HOME/lib/datanucleus-rdbms-fi-xxx.jar:$HCAT_HOME/lib/log4j-api-xxx.jar:$HCAT_HOME/lib/log4j-core-xxx.jar:$HIVE_HOME/lib/commons-lang-xxx.jar
xxx:表示Jar包的版本号。LIB_JARS和HADOOP_CLASSPATH中指定的jar包的版本号需要根据实际环境的版本号进行修改。
- 运行前准备:
- 使用Hive客户端,在beeline中执行以下命令创建源表t1:
create table t1(col1 int);
向t1中插入如下数据:
+----------+--+ | t1.col1 | +----------+--+ | 1 | | 1 | | 1 | | 2 | | 2 | | 3 |
- 执行以下命令创建目的表t2:
本样例工程中创建的表使用Hive默认的存储格式,暂不支持指定存储格式为ORC的表。
- 使用Hive客户端,在beeline中执行以下命令创建源表t1:
- 执行以下命令使用Yarn客户端提交任务:
yarn --config $HADOOP_HOME/etc/hadoop jar $HCAT_CLIENT/hcatalog-example-1.0-SNAPSHOT.jar com.huawei.bigdata.HCatalogExample -libjars $LIB_JARS t1 t2
- 运行结果查看,运行后t2表数据如下所示:
0: jdbc:hive2://192.168.1.18:2181,192.168.1.> select * from t2; +----------+----------+--+ | t2.col1 | t2.col2 | +----------+----------+--+ | 1 | 3 | | 2 | 2 | | 3 | 1 | +----------+----------+--+