今天和大家分享的是Python如何连接hive数据库来进行hivesql的查询操作。

 

step1:环境准备

Python版本:3.6.2

Windows版本:Windows10版本的64位

step2:下载依赖的文件

(1)、.whl文件在https://www.lfd.uci.edu/~gohlke/pythonlibs/地址栏下载相应的python和windows版本的sasl和bitarray

如下截图所示,搜索对应的关键字找到对应的版本下载即可

(2)、下载至本地的目录地址为:D:\python\jar

step3:安装步骤

(1)、Win + R进入cmd命令行

(2)、cd到本地python的安装目录下

(3)、依次安装以下包

pip install six

pip install bit_array

pip install thriftpy (如果本地的python版本为2.X,则安装thrift,如果本地的python版本为3.X,则安装thriftpy)

pip install D:\python\jar\sasl-0.2.1-cp36-cp36m-win_amd64.whl

pip install thrift_sasl

pip install D:\python\jar\bitarray-1.2.2-cp36-cp36m-win_amd64.whl

pip install impyla

注意:安装完成后包的版本号如下

six               1.14.0

bit-array     0.1.0

bitarray       1.2.2

thriftpy        0.3.9

thrift-sasl    0.4.2

impyla          0.16.2

pure-sasl     0.6.2

step4:代码

具体代码示例如下所示:

from impala.dbapi import connect #导入connect模块
import warnings

def hive_connect(hive_sql):
    warnings.filterwarnings('ignore') #忽略warnings警告
    config_hive_beta = {
        'host': '10.7.89.88',  #hive的host地址
        'port': 10000,    #hive的端口号
        'user': 'hive',    #hive的username
        'password': 'hive',    #hive的password
        'database': 'tmp',     #hive中需要查询的数据库名
        'auth_mechanism': 'PLAIN' #hive的hive-site.xml配置文件中获取
    }
    conn = connect(**config_hive_beta)
    #conn = connect(**config_hive_beta)等价于
    #conn = connect(host='10.7.89.88', port=10000, user='hive', password='hive', database='tmp', auth_mechanism='PLAIN')
    cursor = conn.cursor()
    cursor.execute(hive_sql)
    hive_all_hotel = cursor.fetchall()
    print(hive_all_hotel)

使用hive_connect('select count(1) from tmp.tmp_test_table where dt="2020-05-27"')调用该方法查询hive库里的tmp_test_table表的分区为2020-05-27的数据总条数时会报如下错误:

thriftpy.transport.TTransportException: TTransportException(type=1, message="Could not start SASL: b'Error in sasl_client_start (-4) SASL(-4): no mechanism available: Unable to find a callback: 2'")

出现这个错误的主要原因是sasl和pure-sasl有冲突

 

step5:错误解决方法

解决方法如下:

(1)、Win + R进入cmd命令行

(2)、cd到本地python的安装目录下

(3)、卸载sasl:pip uninstall sasl

再次调用hive_connect('select count(1) from tmp.tmp_test_table where dt="2020-05-27"')时,该方法正确的在控制台输出tmp_test_table表分区为2020-05-27的数据总条数为:29341023。

至此,报错完美解决。同时也证明了python连接hive库的方法是实际可行的。感兴趣的可以复制代码修改对应的参数进行实操一下哟~

备注:我的个人公众号已正式开通,致力于测试技术的分享,包含:大数据测试、功能测试,测试开发,API接口自动化、测试运维、UI自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:

 添加关注,一起共同成长吧。

最新文章

  1. 获取IP地址 & 伪装IP地址发送请求
  2. 一个奇葩的SQL
  3. Java类加载
  4. HDU 5685:2016"百度之星" - 资格赛 Problem A
  5. 新浪网易淘宝等IP地区信息查询开放API接口调用方法
  6. Entity Framework(1)
  7. Configuration python CGI in XAMPP in win-7
  8. Halcon学习笔记之缺陷检测(一)
  9. 《Entity Framework 6 Recipes》中文翻译——第十章EntityFramework存储过程处理(八)
  10. C++ 中的“ !” 运算
  11. php连接postgresql
  12. Hibernate 配置详解(9)
  13. linux网络编程学习笔记之三 -----多进程并发服务端
  14. html button 点击链接
  15. SUBMIT WITHOUT ALV
  16. 深度学习框架PyTorch一书的学习-第五章-常用工具模块
  17. Intent 跳转Activity
  18. Spark进阶之路-Spark HA配置
  19. sqli-labs(十八)
  20. HI3518E平台ISP调试环境搭建

热门文章

  1. python --文件读取数据
  2. hdu4035 Maze 题解
  3. 【雕爷学编程】Arduino动手做(60)---WS2812直条8位模块
  4. python 机器学习(二)分类算法-k近邻算法
  5. Enjoy the pain about Moloch
  6. 模板:DOM常用场景【表单提交】——javascript结合HTML DOM(或者JQuery)运用
  7. 【图机器学习】cs224w Lecture 11 & 12 - 网络传播
  8. Istio Sidecar注入原理
  9. 添加nginx新模块,获取客户真实ip
  10. 关于CAS单点登录配置文件误修改导致的JSP报错问题