
# 调测HCatalog样例程序
Hive HCatalog应用程序支持在安装Hive和Yarn客户端的Linux环境中运行。在程序代码完成开发后，您可以上传Jar包至准备好的Linux运行环境中运行。
#### 前提条件
- 已安装Hive和Yarn客户端。
- 当客户端所在主机不是集群中的节点时，需要在客户端所在节点的**hosts**文件中设置主机名和IP地址映射。主机名和IP地址请保持一一对应。
 
#### 操作步骤
1. 在IntelliJ IDEA主界面右侧，单击"Maven Projects"，在"Maven Projects"界面执行"*项目名称* \> Lifecycle"目录下的"clean"和"compile"脚本。
   
   ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001152905477.png)
   
   
2. 在IDEA界面左下方找到Terminal，单击进入终端，执行**mvn clean install** 进行编译
   
   ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0290611100.png "点击放大")
   当输出"BUILD SUCCESS"，表示编译成功，如下图所示。编译成功后将会在样例工程的target下生成含有"hcatalog-example-\*.jar"包。
   ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0294513938.png "点击放大")
   ![](https://support.huaweicloud.com/devg-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
   以上jar包名称仅供参考，具体名称以实际生成为主。
   
   
3. 将[2]中在样例工程下的target下生成的"hcatalog-example-\*.jar"上传至Linux的指定路径，例如"/opt/hive_client"，记作"$HCAT_CLIENT"，并确保已经安装好Hive和Yarn客户端。运行环境变量使HCAT_CLIENT生效。
   
   ```
   export HCAT_CLIENT=/opt/hive_client
   ```
   
   
4. 执行以下命令用于配置环境变量信息（以客户端安装路径为"/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
   ```
   ![](https://support.huaweicloud.com/devg-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
   xxx：表示Jar包的版本号。**LIB_JARS和HADOOP_CLASSPATH中指定的jar包的版本号需要根据实际环境的版本号进行修改**。
   
   
5. 运行前准备： 
   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);**
      
   
   
   ![](https://support.huaweicloud.com/devg-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
   本样例工程中创建的表使用Hive默认的存储格式，暂不支持指定存储格式为ORC的表。
   
   
6. 执行以下命令使用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**
   
   
7. 运行结果查看，运行后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        | 
    +----------+----------+--+
   ```
   
   
 
