
# 基于Python3的Hive样例程序
#### 功能介绍
本章节介绍如何使用Python3连接Hive执行数据分析任务。
#### 样例代码
安全模式连接Hive前需要使用集群客户端进行认证，使用**kinit**命令认证相应权限的Kerberos用户，认证后执行分析任务示例在"hive-examples/python3-examples/pyCLI_sec.py"文件中。
1. 导入hive类
   ```
   from pyhive import hive
   ```
   
2. 创建JDBC连接。
   ```
   connection = hive.Connection(host='hiveserverIp', port=hiveserverPort, username='hive', database='default', auth='KERBEROS', kerberos_service_name="hive", krbhost='hadoop.hadoop.com')
   ```
   需按照实际环境修改以下参数：
   - hiveserverIp：替换为实际需要连接的HiveServer节点IP地址，可登录FusionInsight Manager，选择"集群 \> 服务 \> Hive \> 实例"查看。
   
   - hiveserverPort：需要替换为Hive服务的端口，可在FusionInsight Manager界面，选择"集群 \> 服务 \> Hive \> 配置"，在搜索框中搜索"hive.server2.thrift.port"查看，默认值为"10000"。
   
   - username：参数值为实际使用的用户名，即[准备MRS应用开发用户](https://support.huaweicloud.com/devg-lts-mrs/mrs_07_020002.html)创建的用户名。
   
   - kerberos_service_name：参数值为实际连接的实例，以连接Hive为例，修改为：kerberos_service_name="hive"。
   
   - krbhost：参数值为"hadoop.*实际域名*"，实际域名可登录FusionInsight Manager，选择"系统 \> 权限 \> 域和互信 \> 本端域" 查看。
    
3. 执行SQL语句，样例代码中仅执行查询所有表功能，可根据实际情况修改HQL内容。
   ```
   cursor = connection.cursor()
   cursor.execute('show tables')
   ```
   
4. 获取结果并输出
   ```
   for result in cursor.fetchall():
       print(result)
   ```
   
 
