更新时间:2024-08-05 GMT+08:00

调测Hive HCatalog样例程序

Hive HCatalog应用程序支持在安装Hive和Yarn客户端的Linux环境中运行。在程序代码完成开发后,您可以上传Jar包至准备好的Linux运行环境中运行。

前提条件

  • 已安装Hive和Yarn客户端。
  • 当客户端所在主机不是集群中的节点时,需要在客户端所在节点的hosts文件中设置主机名和IP地址映射。主机名和IP地址请保持一一对应。

操作步骤

  1. 在IDEA界面左下方单击“Terminal”进入终端,执行命令mvn clean install进行编译。

    当输出“BUILD SUCCESS”,表示编译成功,如下图所示。编译成功后将会在样例工程的target下生成“hcatalog-example-*.jar”包。

    以上Jar包名称仅供参考,具体名称以实际生成为主。

  2. 1中在“target”目录下生成的“hcatalog-example-*.jar”上传至Linux的指定路径,例如“/opt/hive_client”,记作“$HCAT_CLIENT”,并确保已经安装好Hive和Yarn客户端。运行环境变量使“HCAT_CLIENT”生效。

    export HCAT_CLIENT=/opt/hive_client 

  3. 执行以下命令用于配置环境变量信息(以客户端安装路径为“/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包的版本号需要根据实际环境的版本号进行修改

  4. 运行前准备:

    1. 使用Hive客户端,在beeline中执行以下命令创建源表t1:

      create table t1(col1 int);

      向t1中插入如下数据:

          +----------+--+ 
          | t1.col1  | 
          +----------+--+ 
          | 1        | 
          | 1        | 
          | 1        | 
          | 2        | 
          | 2        | 
          | 3        |     
    2. 执行以下命令创建目的表t2:

      create table t2(col1 int,col2 int);

    本样例工程中创建的表使用Hive默认的存储格式,暂不支持指定存储格式为ORC的表。

  5. 使用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

  6. 运行结果查看,运行后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        | 
     +----------+----------+--+