Python之大数据库hive实战
今天和大家分享的是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自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:
添加关注,一起共同成长吧。
Python之大数据库hive实战的更多相关文章
- 大数据开发实战:离线大数据处理的主要技术--Hive,概念,SQL,Hive数据库
1.Hive出现背景 Hive是Facebook开发并贡献给Hadoop开源社区的.它是建立在Hadoop体系架构上的一层SQL抽象,使得数据相关人员使用他们最为熟悉的SQL语言就可以进行海量数据的处 ...
- python操作三大主流数据库(10)python操作mongodb数据库④mongodb新闻项目实战
python操作mongodb数据库④mongodb新闻项目实战 参考文档:http://flask-mongoengine.readthedocs.io/en/latest/ 目录: [root@n ...
- 大数据开发实战:Hive优化实战3-大表join大表优化
5.大表join大表优化 如果Hive优化实战2中mapjoin中小表dim_seller很大呢?比如超过了1GB大小?这种就是大表join大表的问题.首先引入一个具体的问题场景,然后基于此介绍各自优 ...
- 大数据开发实战:Hive优化实战2-大表join小表优化
4.大表join小表优化 和join相关的优化主要分为mapjoin可以解决的优化(即大表join小表)和mapjoin无法解决的优化(即大表join大表),前者相对容易解决,后者较难,比较麻烦. 首 ...
- 大数据开发实战:Hive优化实战1-数据倾斜及join无关的优化
Hive SQL的各种优化方法基本 都和数据倾斜密切相关. Hive的优化分为join相关的优化和join无关的优化,从项目的实际来说,join相关的优化占了Hive优化的大部分内容,而join相关的 ...
- 大数据开发实战:Hive表DDL和DML
1.Hive 表 DDL 1.1.创建表 Hive中创建表的完整语法如下: CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [ (col_nam ...
- Django-Multitenant,分布式多租户数据库项目实战(Python/Django+Postgres+Citus)
Python/Django 支持分布式多租户数据库,如 Postgres+Citus. 通过将租户上下文添加到您的查询来实现轻松横向扩展,使数据库(例如 Citus)能够有效地将查询路由到正确的数据库 ...
- 【Python实战】使用Python连接Teradata数据库???未完成
1.安装Python 方法详见:[Python 05]Python开发环境搭建 2.安装Teradata客户端ODBC驱动 安装包地址:TTU下载地址 (1)安装TeraGSS和tdicu(ODBC依 ...
- 【python接口自动化】- 对接各大数据库
相信很多小伙伴在使用python进行自动化测试的时候,都会涉及到数据库数据校验的问题,在前面的随笔中就已经有讲过连接mysql的使用,今天给大家汇总一下python对接几大常用的数据库操作的方法!众所 ...
随机推荐
- python 数据类型: 字符串String / 列表List / 元组Tuple / 集合Set / 字典Dictionary
#python中标准数据类型 字符串String 列表List 元组Tuple 集合Set 字典Dictionary 铭记:变量无类型,对象有类型 #单个变量赋值 countn00 = '; #整数 ...
- android 数据库是否该关闭
关于android多线程数据读写请看博客: android 多线程数据库读写 常常纠结于获取了SQLiteDatabase每次操作完是否要关闭的问题,每次关闭又怕影响性能,这里记录下SQLiteOpe ...
- java 生成随机字符串
1.生成之指定位数的随机字符串 /** * 随机基数 */ private static char[] charset = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h ...
- PAT 1007 Maximum Subsequence Sum (25分)
题目 Given a sequence of K integers { N1 , N2 , ..., NK }. A continuous subsequence is define ...
- 基于 abp vNext 和 .NET Core 开发博客项目 - 自定义仓储之增删改查
上一篇文章(https://www.cnblogs.com/meowv/p/12913676.html)我们用Code-First的方式创建了博客所需的实体类,生成了数据库表,完成了对EF Core的 ...
- centOS 开启服务器后无法访问(大坑啊)
在开启了nodejs后,发现虽然ssh访问到主机,但是公网不能访问. 一番调试发现程序是正常的,也确实在监听着端口.折腾良久无果,在Vultr上发帖求助.几分钟后Vultr团队的工程师Joshua B ...
- oracle删除会话
create procedure killsessionas --set serveroutput on; --in oracle sql developer this cannot be ignor ...
- 09-Python之路---函数进阶
Python之路---函数进阶️ 程序员三大美德: 懒惰 因为一直致力于减少工作的总工作量. 缺乏耐性 因为一旦让你去做本该计算机完成的事,你将会怒不可遏. 傲慢 因为被荣誉感冲晕头的你会把程序写得让 ...
- CF832D
题目链接:http://codeforces.com/contest/832/problem/D 题目大意:在一个无向图上,给出三个点,以其中一个点为终点,另外两个点为起点,请问如何安排起点和终点可以 ...
- XXX_ProductCRUD的项目结构与配置文件
MVC_ProductCRUD Hibernate_ProductCRUD 项目结构 ...