最近做数据ETL系统的更新,需要将原有ETL任务迁移到新的系统中,并验证数据的准确性。

目录

安装依赖包

核心代码

遇到的坑

依赖包版本

安装依赖包

因为本人电脑是win本,所以只能使用impyla连接;其他系统还可以使用PyHive包进行连接

pip install impyla
pip install pure-sasl
pip install thrift_sasl
pip install thrift
pip install sasl

注意点:

直接使用pip安装sasl时,一般会报错!可以直接在前往https://www.lfd.uci.edu/~gohlke/pythonlibs/#sasl下载对应版本安装。(目前最高支持python3.7,更高的版本无法安装,后续是否支持待定)

核心代码

from impala.dbapi import connect
from pandas.testing import assert_frame_equal
import pandas as pd# 连接hive
hive_conn = connect(host='127.0.0.1', port=12446, database=db_name,user=user, password=password, auth_mechanism='PLAIN')
cursor = hive_conn.cursor()
# 查询数据量
cursor.execute('select count(1) from %s where %s = %s' % (table_name, pt_col, date))
ret = cursor.fetchall()
for j in ret:print(j)
ret = pd.DataFrame(ret)
print(ret)

遇到的坑

1、

TypeError: can’t concat str to bytes

根据报错信息定位错误在\lib\site-packages\thrift_sasl\__init__.py第94行


header = struct.pack(">BI", status, len(body))
self._trans.write(header + body)

修改为

header = struct.pack(">BI", status, len(body))
if(type(body) is str):body = body.encode()
self._trans.write(header + body)

2、

thrift.transport.TTransport.TTransportException: Could not start SASL: b'Error in sasl_client_start (-4) SASL(-4): no mechanism available: Unable to find a callback: 2'

此种错误是sasl包版本原因, 直接将原来安装sasl包卸载,然后重新安装0.2.0 版本的thrift-sasl即可

3、

ThriftParserError: ThriftPy does not support generating module with path in protocol ‘c’

根据报错信息定位到 \Lib\site-packages\thriftpy\parser\parser.py

if url_scheme == '':with open(path) as fh:data = fh.read()
elif url_scheme in ('http', 'https'):data = urlopen(path).read()
else:raise ThriftParserError('ThriftPy does not support generating module ''with path in protocol \'{}\''.format(url_scheme))

修改为

if url_scheme == '':with open(path) as fh:data = fh.read()
elif url_scheme in ('c', 'd','e','f''):with open(path) as fh:data = fh.read()elif url_scheme in ('http', 'https'):data = urlopen(path).read()
else:raise ThriftParserError('ThriftPy does not support generating module ''with path in protocol \'{}\''.format(url_scheme))

依赖包版本

thrift                  0.13.0
thrift-sasl             0.2.1
thriftpy                 0.3.9
thriftpy2               0.4.0
bit-array               0.1.0
bitarray                 2.2.3
pure-sasl               0.6.2
impyla                   0.15a1

python访问hive数据库踩坑指南相关推荐

  1. 内网穿透,使用 IPv6 公网访问内网设备踩坑指南

    本文是开启宽带 IPv6 功能并使用公网 IPv6 地址访问内网设备的踩坑指南.IPv6 是目前个人体验最优的内网访问方案,个人体验远胜过 ZeroTier,frp 等方案. 场景 将个人设备暴露于公 ...

  2. pytorch .item_从数据到模型,你可能需要1篇详实的pytorch踩坑指南

    原创 · 作者 | Giant 学校 | 浙江大学 研究方向 | 对话系统.text2sql 熟悉DL的朋友应该知道Tensorflow.Pytorch.Caffe这些成熟的框架,它们让广大AI爱好者 ...

  3. tabbar角标 小程序_【沃行课堂】恭喜你遇到“坑”,小程序踩坑指南

    上周我们的开发小哥哥带领我们一起领略了开发中遇到的各种问题,以及基于SaaS模式的平台技术架构及实现.本周我们换个方向,由高级开发工程师秋哥带领大家共同探讨下小程序开发中踩过的坑.秋哥会从公司的几个小 ...

  4. MacBook通过XGP玩女神异闻录5皇家版不踩坑指南

    XGP是微软Xbox游戏通行证服务,全称Xbox Game Pass,俗称西瓜皮. 女神异闻录5皇家版(P5R)登录了全平台,XGP会员可以通过云游戏在MacBook中游玩,本篇为MacBook玩P5 ...

  5. Spring Cloud踩坑指南

    Spring Cloud踩坑指南 1 Spring Cloud搭建 参考 Spring Cloud 微服务技术栈:搭建高可用 Eureka Server.服务注册与发现 2 常见问题 2.1 修改ho ...

  6. 阿里云天池【Docker练习场】踩坑指南

    阿里云天池[Docker练习场]踩坑指南 题目直达 提交环境搭建(基于macOS) Docker的安装与基本功能使用 Docker安装过程遇到的小问题 提交结果注意事项 提交时的镜像配置 项目结构规范 ...

  7. 我的域名注册踩坑指南

    我的域名注册踩坑指南 一.前言 二.目前拥有的纯字母域名 ds.mba csu.asia mpkq.org impkq.com openhm.com okotlin.com ktanjava.com ...

  8. windows系统安装docker版本davinci达芬奇踩坑指南

    本文讲解windows系统如何安装docker版开源软件davinci(数据可视化web服务),并指出一系列的踩坑指南. 达芬奇github地址   https://github.com/edp963 ...

  9. Egg整合antd文件上传以及防踩坑指南

    Egg整合antd文件上传以及防踩坑指南 前言 一. 项目编写 二. 注意事项 2.1 清理缓存 2.2 antd的Upload组件得到的事件对象问题 2.3 关于onChange事件的注意 前言 最 ...

最新文章

  1. 程序员期末试卷_第三部分复习提纲.doc下载
  2. 客户花钱雇黑客,竟是为Zoom找bug:风口浪尖的视频会议No.1,安全问题如此魔幻...
  3. MySQL数据库导入或者同步大量数据时数据丢失解决方案
  4. UVa11039 Building designing(贪心算法)
  5. 《程序员代码面试指南第二版》Python实现(个人读书笔记)
  6. 研发协同平台数据库死锁处理及改进
  7. 红头文件rgb红色值_拿下抖音小姐姐,我写了个口红色号识别器
  8. AI 会替代程序员?超好用的自动补全代码工具 Deep TabNine!
  9. MYSQL ERROR 1045 错误的解决办法 (转)
  10. Flutter高级第7篇:点击穿透问题、页面禁止左右滑动
  11. Output path is shared between the same module error
  12. MATLAB利用小波分析提取周期
  13. 实战攻防比赛中作为防守方需要做哪些工作
  14. centos oracle 修改监听服务名_虚拟机(Oracle Virtual Box)下ORACLE的安装
  15. 区间调度问题(最大利润作业调度问题)
  16. 并行查询的执行计划解读
  17. 在腾讯的八年,我的职业思考!
  18. Word如何操作压缩图片?干货经验!怎么在Word中压缩图片?
  19. thinkphp 启动worker
  20. 【路径规划】基于matlab DWA动态避障路径规划【含Matlab源码 2356期】

热门文章

  1. python 警告:simplify chained comparison
  2. 关于视频软件开发的技术
  3. Java三大框架SSH面试题锦集
  4. Fortinet :《2021 年OT与网络安全现状报告》之「要点综述」
  5. 已知四种原子的质量,C/H/O/N分别为12/1/16/14,输入分子式,计算分子量。例如H2O,分子量为1*2+16=18,有如HC11N2,分子量为1+12*11+14*2=161
  6. 【AI绘画 | draft意间】国产draft推荐及AI绘画背后的原理解读
  7. 如何打开pkl文件,pkl是什么类型的文件?
  8. 不得不服!java面试初试和复试的区别
  9. svn版本更迭的原理
  10. 大一第二学期课程总结