温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。
Fayson的github: https://github.com/fayson/cdhproject
提示:代码块部分可以左右滑动查看噢
1
文档编写目的
随着Hadoop平台的流行,越来越多的开发语言访问Hadoop平台的组件,比较常见的Java、Scala、Python、R等。在前面的多篇文章中Fayson介绍了Java和Scala访问Hadoop各个组件的方法。对于偏分析类的Python和R语言访问集群的Hive和Impala比较多。本篇文章Fayson主要介绍如何使用Python3访问Kerberos环境的Hive和Impala。
1.RedHat7.2
2.CM和CDH版本为5.15.0
3.Python3.6
2
Python环境准备
Python访问Hive和Impala需要安装Python的客户端,Cloudera提供的Impyla包提供了基于JDBC的方式访问Kerberos、LDAP、SSL环境的Hive和Impala。Impyla包支持2.6+或3.3+的Python版本,接下来在我们的环境安装impyla及其依赖包。
1.创建requirements.txt文件,内容如下
[root@cdh1 python_code]# vim requirements.txt
six
bit_array
thrift
thrift_sasl==0.2.1
impyla
2.在命令行执行如下命令安装python包
[root@cdh1 python_code]# /opt/cloudera/anaconda3/bin/pip3 install -r requirements.txt
3
Python访问Hive示例
1.编写Python访问Hive示例代码,内容如下:
from impala.dbapi import connect
#获取Connect对象
conn = connect(host='cdh2.fayson.com',port=10000,database='default',auth_mechanism='GSSAPI',kerberos_service_name='hive')
print(conn)
cursor = conn.cursor()
cursor.execute('show databases')
print (cursor.description) # prints the result set's schema
results = cursor.fetchall()
print(results)
2.在命令行进行kinit操作
3.使用python命令运行impyla_hive.py文件
[root@cdh1 python_code]# /opt/cloudera/anaconda3/bin/python impyla_hive.py
4
Python访问Impala示例
1.编写Python访问Impala示例代码
from impala.dbapi import connect
conn = connect(host='cdh1.fayson.com',port=25004,database='default',auth_mechanism='GSSAPI',kerberos_service_name='impala')
print(conn)
cursor = conn.cursor()
cursor.execute('show databases')
print (cursor.description) # prints the result set's schema
results = cursor.fetchall()
print(results)
2.在命令行进行kinit操作
3.在命令行进行kinit操作
[root@cdh1 python_code]# /opt/cloudera/anaconda3/bin/python impyla_impala.py
5
总结
1.Python代码访问Hive和Impala需要安装客户端工具Impyla
2.Impyla支持Kerberos、LDAP和SSL各种安全环境的Hive和Impala
3.在示例中Fayson的Impala端口号与默认不一致,配置了Impala的HAProxy原因。
提示:代码块部分可以左右滑动查看噢
为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。
推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。