使用python客户端访问impala的操作方式


Posted in Python onMarch 28, 2020

因需要将impala仅仅作为数据源使用,而python有较好的数据分析函数,所以需要使用python客户端来获取impala中的表数据,这里的测试环境是:

操作系统:win7 (linux下也可行)

python 2.7

大数据环境:centos6.6

CDH版本:CDH5.4.1

impala 2.1.2 port:21050

1、安装Python package

pip install impyla

2、python客户端与impala交互

2.1 连接impala

>>> from impala.dbapi import connect
>>> conn = connect(host='my.impala.host', port=21050)
>>> cur = conn.cursor()

注意:这里要确保端口设置为HS2服务,而不是Beeswax服务。在Cloudera的管理集群中,HS2的默认端口是21050。 (Beeswax默认端口21000)

2.2 对impala执行SQL查询

>>> cur.execute('SHOW TABLES')
>>> cur.fetchall()
[('defect_code_dim',), ('gxzl_ca_materialinfo',), ('gxzl_cg_materialinfo',), ('gxzl_defect2',), ('gxzl_defects',), ('gxzl_defects_hd',), ('gxzl_fx_class',), ('gxzl_fx_leftmidright',), ('gxzl_fx_topandbot',), ('gxzl_jiejing_2cc_slab',), ('gxzl_kgx_drw',), ('gxzl_kgx_drw_tmp',), ('gxzl_rz_materialinfo',), ('gxzl_sdbase_defects',), ('gxzl_test',), ('new_table',), ('ouye_transactionlog',), ('ouye_userinfo',), ('simple_test',), ('t0',), ('t_100m_hdfs',), ('t_100m_test',), ('t_10m_hdfs',), ('target1',), ('target2',), ('target3',), ('test',), ('tianchi_mobile_recommend_train_full',), ('tianchi_mobile_recommend_train_item',), ('tianchi_mobile_recommend_train_user',), ('tianchi_mobile_recommend_train_useritem',)]
>>> cur.execute('SELECT * FROM test')
>>> cur.description
[('id', 'DOUBLE', None, None, None, None, None), ('name', 'STRING', None, None, None, None, None), ('value', 'STRING', None, None, None, None, None)]
>>> cur.fetchall()
[(1.0, 'tom', 'f'), (2.0, 'jerry', 't')]
>>>

注意:从服务器上获取数据会删除缓存,所以第二个.fetchall()返回一个空列表。

>>> cur.fetchall()
[(1.0, 'tom', 'f'), (2.0, 'jerry', 't')]
>>> cur.fetchall()
[]
>>>

2.3 遍历查询结果

>>> cur.execute('SELECT * FROM test')
>>> for row in cur:
  print row[1] == 1.0


False
False

注:python的角标是以0开始。以上仍是以缓存方式来获取数据。

如果你的数据集较小可以使用这种方式;如果你需要存储大量的数据集,你可以用CREATE TABLE AS SELECT语句把它写入HDFS。

2.4 将查询结果转化为python中的pandas DataFrames

除了遍历结果以外,还可以把结果转化成pandas的数据框对象,以便进行数据分析:

>>> from impala.dbapi import connect
>>> conn = connect(host='my.impala.host', port=21050)
>>> cur = conn.cursor()
>>> from impala.util import as_pandas
>>> cur.execute('SELECT * FROM test')
>>> df = as_pandas(cur)
>>> type(df)
<class 'pandas.core.frame.DataFrame'>
>>> df
  id  name value
0  1  tom   f
1  2 jerry   t
>>>

注:前提是python中安装了pandas,使用pip install pandas在线安装,安装过程中可能会提示:Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall.bat). Get it from http://aka.ms/vcpython27

只要按照提示说的的去下载一个VC就可以了。这样就安装好了pandas。

以上这篇使用python客户端访问impala的操作方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用python的chardet库获得文件编码并修改编码
Jan 22 Python
用Python编写一个每天都在系统下新建一个文件夹的脚本
May 04 Python
python操作excel的包(openpyxl、xlsxwriter)
Jun 11 Python
python如何生成各种随机分布图
Aug 27 Python
python绘制散点图并标记序号的方法
Dec 11 Python
浅谈Django中view对数据库的调用方法
Jul 18 Python
Python批量将图片灰度化的实现代码
Apr 11 Python
torchxrayvision包安装过程(附pytorch1.6cpu版安装)
Aug 26 Python
Python JSON常用编解码方法代码实例
Sep 05 Python
Python实现Excel文件的合并(以新冠疫情数据为例)
Mar 20 Python
Python OpenCV超详细讲解调整大小与图像操作的实现
Apr 02 Python
Python使用mitmproxy工具监控手机 下载手机小视频
Apr 18 Python
python 安装impala包步骤
Mar 28 #Python
django 链接多个数据库 并使用原生sql实现
Mar 28 #Python
Django多数据库配置及逆向生成model教程
Mar 28 #Python
后端开发使用pycharm的技巧(推荐)
Mar 27 #Python
如何基于python3和Vue实现AES数据加密
Mar 27 #Python
python小程序基于Jupyter实现天气查询的方法
Mar 27 #Python
Python实现的北京积分落户数据分析示例
Mar 27 #Python
You might like
php+lottery.js实现九宫格抽奖功能
2019/07/21 PHP
JS解决url传值出现中文乱码的另类办法
2013/04/08 Javascript
让复选框只能选择一项的方法
2013/10/08 Javascript
全国省市二级联动下拉菜单 js版
2016/05/10 Javascript
JQuery EasyUI Layout 在from布局自适应窗口大小的实现方法
2016/05/28 Javascript
JS与HTML结合使用marquee标签实现无缝滚动效果代码
2016/07/05 Javascript
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
H5用户注册表单页 注册模态框!
2016/09/17 Javascript
简单实现jQuery多选框功能
2017/01/09 Javascript
使用JavaScript触发过渡效果的方法
2017/01/19 Javascript
js+html5 canvas实现ps钢笔抠图
2019/04/28 Javascript
JavaScript前端实现压缩图片功能
2020/03/06 Javascript
jQuery三组基本动画与自定义动画操作实例总结
2020/05/09 jQuery
请求时token过期自动刷新token操作
2020/09/11 Javascript
[01:07:20]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第二场 2月2日
2021/03/11 DOTA
在Python中marshal对象序列化的相关知识
2015/07/01 Python
详解如何在python中读写和存储matlab的数据文件(*.mat)
2018/02/24 Python
kafka-python批量发送数据的实例
2018/12/27 Python
Python 面向对象之封装、继承、多态操作实例分析
2019/11/21 Python
python 双循环遍历list 变量判断代码
2020/05/04 Python
利用Vscode进行Python开发环境配置的步骤
2020/06/22 Python
俄罗斯优惠券网站:BIGLION
2017/05/21 全球购物
澳大利亚领先的武术用品和健身器材供应商:SMAI
2019/03/24 全球购物
马耳他航空公司官方网站:Air Malta
2019/05/15 全球购物
大学老师推荐信
2014/02/25 职场文书
中国入世承诺
2014/04/01 职场文书
副董事长岗位职责
2014/04/02 职场文书
物理课外活动总结
2014/08/27 职场文书
小学生竞选班干部演讲稿(5篇)
2014/09/12 职场文书
受伤赔偿协议书
2014/09/24 职场文书
初中生300字旷课检讨书
2014/11/19 职场文书
担保书格式
2015/01/20 职场文书
大学军训决心书
2015/02/05 职场文书
Python爬取科目四考试题库的方法实现
2021/03/30 Python
JVM之方法返回地址详解
2022/02/28 Java/Android
使用CSS实现按钮边缘跑马灯动画
2023/05/07 HTML / CSS