
# 在Windows中调测Hive JDBC应用
#### JDBC客户端的命令行形式运行
1. 运行样例。 
   依照[准备Hive JDBC开发环境](https://support.huaweicloud.com/devg-mrs/mrs_06_0060.html)中导入和修改样例后，并从集群的任一Master节点的路径"/opt/client/Hive/config/hiveclient.properties"下获取"hiveclient.properties"文件，并放置到样例工程的conf下，即"hive-examples/conf"，即可在开发环境中（例如Eclipse中），右击"ExampleMain.java"，单击"Run as \> Java Application"运行对应的应用程序工程。
   ![](https://support.huaweicloud.com/devg-mrs/public_sys-resources/note_3.0-zh-cn.png)
   使用windows访问MRS集群来操作Hive，有如下两种方式。
   - 申请一台windows的ECS访问MRS集群操作Hive，此种方式是通过连接zookeeper动态获取HiveServer的地址然后来操作Hive，具有高可用性。
   
   - 使用本机访问MRS集群操作Hive，由于本机与MRS集群的网络不通，只能通过直连HiveServer的方式操作Hive。
   
   
   方法一：申请一台windows的ECS访问MRS集群操作Hive。在安装开发环境后可直接运行样例代码。申请ECS访问MRS集群的步骤如下。
   1. 在"现有集群"列表中，单击已创建的集群名称。 记录集群的"可用分区"、"虚拟私有云"、"集群控制台地址"，以及Master节点的"默认安全组"。
      
   
   2. 在弹性云服务管理控制台，创建一个新的弹性云服务器。 弹性云服务器的"可用分区"、"虚拟私有云"、"安全组"，需要和待访问集群的配置相同。
      选择一个Windows系统的公共镜像。
      其他配置参数详细信息，请参见"弹性云服务器 \> 快速入门 \> 购买并登录Windows弹性云服务器"
      
    
   方法二：使用本机访问MRS集群操作Hive。在安装开发环境后并完成以下步骤后再运行样例代码。
   1. 为MRS集群中要使用Hive服务的HiveServer节点或ZooKeeper节点绑定弹性公网IP，绑定弹性公网IP步骤如下。
      1. 在虚拟私有云管理控制台，申请一个弹性IP地址，并与弹性云服务器绑定。 具体请参见"虚拟私有云 \> 用户指南 \> 弹性公网IP \> 为弹性云服务器申请和绑定弹性公网IP"。
         
      
      2. 为MRS集群开放安全组规则。 在集群Master节点和Core节点的安全组添加安全组规则使弹性云服务器可以访问集群，若集群为安全集群则需要同时将UDP的21731、21732端口和TCP的21730、21731、21732及Hive的HiveServer实例端口和ZooKeeper服务的端口添加在安全组的入方向规则中。请参见"虚拟私有云 \> 用户指南 \> 安全性 \> 安全组 \> 添加安全组规则"。
         
       
   
   2. 修改导入的"hiveclient.properties"文件，使得"zk.quorum"参数对应于绑定的HiveServer的弹性公网IP及ZooKeeper端口，并修改样例代码中对连接JDBC时URL的拼接。详情请参见[分析Hive数据](https://support.huaweicloud.com/devg-mrs/mrs_06_0069.html)中直连HiveServer的方式。
   
   3. 修改导入样例的krb5.conf中"kdc","admin_server","kpasswd_server","kdc_listen","kadmind_listen"和"kpasswd_listen"六个参数的ip(单master的集群没有后面三个参数不必修改)，使其对应于KrbServer服务中对应的弹性公网IP（由于普通集群未启用kerberos功能，可跳过此步骤）。并将修改后的krb5.conf和user.keytab文件放置到样例工程的conf目录下。
   
   4. 若通过ZooKeeper的方式访问Hive，需要修改本地hosts文件，添加[1]中为节点绑定的公网IP和主机名的映射。
   
   5. 若运行报"Message stream modified (41)"的错误，这可能与JDK的版本有关系，可以尝试修改运行样例代码的JDK为8u_242以下版本或删除"krb5.conf"配置文件的"renew_lifetime = 0m"配置项。
    
   
   
2. 查看结果。 
   查看样例代码中的HiveQL所查询出的结果，运行成功结果会有如下信息。
   JDBC客户端运行及结果查看。
   ```
   Create table success!
   _c0
   0
   Delete table success!
   ```
   
   
 
