0473-如何使用Python3访问Kerberos环境的Hive和Impala

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。
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

0473-如何使用Python3访问Kerberos环境的Hive和Impala_第1张图片

2.在命令行执行如下命令安装python包

[root@cdh1 python_code]# /opt/cloudera/anaconda3/bin/pip3 install -r requirements.txt 

0473-如何使用Python3访问Kerberos环境的Hive和Impala_第2张图片

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)

0473-如何使用Python3访问Kerberos环境的Hive和Impala_第3张图片

2.在命令行进行kinit操作

0473-如何使用Python3访问Kerberos环境的Hive和Impala_第4张图片

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)

0473-如何使用Python3访问Kerberos环境的Hive和Impala_第5张图片

2.在命令行进行kinit操作

0473-如何使用Python3访问Kerberos环境的Hive和Impala_第6张图片

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干货,欢迎转发和分享。

你可能感兴趣的:(Hadoop实操)