python连接hive配置

本文详细介绍在CentOS 6.8环境下安装Hive并配置Python客户端的过程,包括离线环境下所需的依赖包安装及PyHive库的使用,确保Python环境能顺利连接并操作Hive数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注:Python端所在服务器为centos6.8

一,hive安装配置

参考博文:https://blog.youkuaiyun.com/u010916338/article/details/89764877

重要一点,hive是个客户端,不是集群,在hive所在节点必须执行如下命令:

hive --service hiveserver2

参考博文:https://blog.youkuaiyun.com/zhangzc12409/article/details/79224487

二,访问hive的客户端

注:客户端指的是装有anaconda的python环境的Linux机器,并非装有hive的机器

以下涉及所有包,

链接:https://pan.baidu.com/s/13qTcsUxXgwKFki9tPwODxA 
提取码:6xy5 

(1)yum install gcc-c++

断网情况下,参考博文:https://blog.youkuaiyun.com/u010916338/article/details/95586525

 (2)yum install  python-devel.x86_64

断网情况下,下载3个包,python-devel-2.6.6-66.el6_8.x86_64.rpm以及两个依赖包,python-2.6.6-66.el6_8.x86_64.rpm和python-libs-2.6.6-66.el6_8.x86_64.rpm

注:这个底层依赖Python2.6,有可能存在装不上的情况,除了一个一个装还有一个办法就是将上面三个包放到一个文件夹里,然后命令行切换到该目录,执行命令:rpm -Uvh *.rpm --nodeps --force   这条命令的好处就是,谁依赖谁不用管,谁先安装不用管,有的依赖没有跑到100%也不用管,自己就会安装成功。

(3)yum install  cyrus-sasl-devel.x86_64

断网情况下,下载包,cyrus-sasl-devel-2.1.23-15.el6_6.2.x86_64.rpm

执行命令:rpm -ivh cyrus-sasl-devel-2.1.23-15.el6_6.2.x86_64.rpm

(4)yum  install cyrus-sasl-md5 

断网下载包,cyrus-sasl-md5-2.1.23-15.el6_6.2.x86_64.rpm

执行命令:rpm -ivh cyrus-sasl-md5-2.1.23-15.el6_6.2.x86_64.rpm

(5)yum install cyrus-sasl-plain 

断网下载包,cyrus-sasl-plain-2.1.23-15.el6_6.2.x86_64.rpm

执行命令:rpm -ivh cyrus-sasl-plain-2.1.23-15.el6_6.2.x86_64.rpm

(6)yum install cyrus-sasl-lib

断网下载包,cyrus-sasl-lib-2.1.23-15.el6_6.2.x86_64.rpm

执行命令:rpm -ivh cyrus-sasl-lib-2.1.23-15.el6_6.2.x86_64.rpm

(7)yum install cyrus-sasl-gssapi

断网下载包,cyrus-sasl-gssapi-2.1.23-15.el6_6.2.x86_64.rpm

执行命令:rpm -ivh cyrus-sasl-gssapi-2.1.23-15.el6_6.2.x86_64.rpm

(8)pip install sasl

断网下载包,sasl-0.2.1.tar.gz

执行命令:rpm -ivh sasl-0.2.1.tar.gz

(9)pip install thrift

断网下载包,thrift-0.11.0.tar.gz

执行命令:tar -xvf thrift-0.11.0.tar.gz

进入解压后的文件夹,执行命令:python setup.py install

(10)pip install thrift-sasl

断网下载包,thrift_sasl-0.3.0.tar.gz

执行命令:tar -xvf thrift-0.11.0.tar.gz

进入解压后的文件夹,执行命令:python setup.py install

(11)pip install PyHive

 断网下载包,PyHive-0.6.1.tar.gz,future-0.17.1.tar.gz

执行命令:tar -xvf PyHive-0.6.1.tar.gz        tar -xvf future-0.17.1.tar.gz

进入解压后的文件夹,执行命令:python setup.py install

三,连接测试

注意连接的各项参数

#ip地址,即hive所在节点地址,注意hive是一个客户端,不是一个集群。
#port是hive所在节点执行hive --service hiveserver2后自然就会打开10000端口
#username,如果安装hive时没有设定,那么默认用户名就是hive
#database,即你要访问的已经在hive中创建的数据库,如果之前未创建,那么hive中自带有一个名叫default的数据库可以用来测试连通性。
#tablename,数据库中表名

from pyhive import hive
conn = hive.Connection(host='ip地址', port=10000, username='用户名', database='default')
cursor = conn.cursor()
cursor.execute('select * from tablename limit 10')
for result in cursor.fetchall():
    print( result)

 

<think>好的,用户想了解如何使用Python连接Hive,并请求示例。首先,我需要回忆相关的Python库和方法。根据用户提供的引用,有三个主要客户端:pyhs2、pyhive和impyla。不过pyhs2已经不再维护,所以推荐使用pyhive或impyla。 接下来,用户可能需要具体的安装步骤和代码示例。引用[1]中提到了使用pyhive的例子,包括创建连接和执行查询的过程。这个示例可以作为基础,但需要补充安装步骤,比如安装依赖包thrift和sasl,特别是如果遇到认证问题的话,可能需要配置Kerberos,如引用[2]所述。 同时,用户可能需要处理不同环境下的配置,比如Linux和Windows。需要指出安装过程中可能遇到的问题,比如sasl库在Windows下的安装可能需要额外工具,这时候可以建议使用conda或者预编译的包。 另外,引用[3]提供了一个外部链接,可能包含更多详细信息,但用户可能希望直接在回答中获得关键步骤,而不必访问外部链接。因此,应该将关键信息整合到回答中,确保步骤清晰。 还需要考虑不同的认证方式,比如NOSASL和Kerberos,如引用[1]和[2]提到的。用户可能需要根据他们的Hive配置选择合适的认证方式,并提供相应的示例代码。 最后,生成相关问题,帮助用户深入理解,比如性能优化、异常处理等,这样用户可以根据自己的需求进一步探索。</think>以下是Python连接Hive的三种主流方法及示例,根据不同的认证需求进行分类说明: ### 一、基础连接方法(无Kerberos认证) ```python # 安装依赖:pip install pyhive thrift sasl from pyhive import hive def basic_connection(): conn = hive.Connection( host='hive-server-ip', # HiveServer2服务IP port=10000, # 默认端口 username='hadoop', # 集群用户名 database='default', # 默认数据库 auth='NOSASL' # 认证模式 ) cursor = conn.cursor() cursor.execute('SHOW TABLES') print(cursor.fetchall()) ``` > 注意:若提示`sasl`模块错误,Windows系统需通过`conda install -c conda-forge sasl`安装[^2] ### 二、Kerberos认证连接 ```python # 安装依赖:pip install pyhive thrift_sasl requests-kerberos from pyhive import hive from requests_kerberos import HTTPKerberosAuth def kerberos_connection(): conn = hive.Connection( host='hive-server-ip', port=10000, auth='KERBEROS', # Kerberos认证模式 kerberos_service_name='hive', # 服务主体名称 configuration={ 'hive.server2.authentication.kerberos.principal': 'hive/_HOST@YOUR-REALM.COM' } ) cursor.execute('SELECT COUNT(*) FROM sample_table') print(cursor.fetchone()[0]) ``` > 需提前配置`krb5.conf`文件并获取有效Kerberos票据[^2] ### 三、使用Impyla客户端 ```python # 安装:pip install impyla thrift_sasl from impala.dbapi import connect def impyla_connection(): conn = connect( host='impala-server-ip', port=21050, # Impala默认端口 auth_mechanism='GSSAPI', # 认证机制 kerberos_service_name='impala' ) cursor = conn.cursor() cursor.execute('DESCRIBE formatted sample_table') print(cursor.fetchall()) ``` > 推荐用于Impala交互场景,支持更丰富的元数据操作[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值