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

基于Python3Hive样例程序

功能介绍

本章节介绍如何使用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:参数值为实际使用的用户名,即准备集群认证用户信息创建的用户名。
    • 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)