使用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使用正则搜索字符串或文件中的浮点数代码实例
Jul 11 Python
详解python中的文件与目录操作
Jul 11 Python
python版简单工厂模式
Oct 16 Python
Python设计模式之工厂模式简单示例
Jan 09 Python
TensorFlow实现AutoEncoder自编码器
Mar 09 Python
Python3正则匹配re.split,re.finditer及re.findall函数用法详解
Jun 11 Python
Python cv2 图像自适应灰度直方图均衡化处理方法
Dec 07 Python
Python设计模式之代理模式实例详解
Jan 19 Python
详解Python的数据库操作(pymysql)
Apr 04 Python
python mqtt 客户端的实现代码实例
Sep 25 Python
pygame库实现移动底座弹球小游戏
Apr 14 Python
python文件目录操作之os模块
May 08 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
三国漫画《火凤燎原》宣布动画化PV放出 预计2020年播出
2020/03/08 国漫
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
2007/09/02 PHP
PHP以及MYSQL日期比较方法
2012/11/29 PHP
php header功能的使用
2013/10/28 PHP
显示youtube视频缩略图和Vimeo视频缩略图代码分享
2014/02/13 PHP
ThinkPHP模板比较标签用法详解
2014/06/30 PHP
轻松掌握php设计模式之访问者模式
2016/09/23 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
滚动条响应鼠标滑轮事件实现上下滚动的js代码
2014/06/30 Javascript
JavaScript window.location对象
2014/11/14 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
2014/12/29 Javascript
JavaScript学习笔记之基础语法
2015/01/22 Javascript
Vue结合原生js实现自定义组件自动生成示例
2017/01/21 Javascript
静态页面实现 include 引入公用代码的示例
2017/09/25 Javascript
vue的全局提示框组件实例代码
2018/02/26 Javascript
layer ui 导入文件之前传入数据的实例
2019/09/23 Javascript
JavaScript实现随机五位数验证码
2019/09/27 Javascript
Vue实现剪切板图片压缩功能
2020/02/04 Javascript
微信小程序 wx.getUserInfo引导用户授权问题实例分析
2020/03/09 Javascript
JS实现放大镜效果
2020/09/21 Javascript
Vue+Bootstrap收藏(点赞)功能逻辑与具体实现
2020/10/22 Javascript
解决vue项目中出现Invalid Host header的问题
2020/11/17 Javascript
Python中用psycopg2模块操作PostgreSQL方法
2017/11/28 Python
Python中装饰器学习总结
2018/02/10 Python
python自动保存百度盘资源到百度盘中的实例代码
2019/08/26 Python
Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)
2020/04/08 Python
Django中的模型类设计及展示示例详解
2020/05/29 Python
pytorch cuda上tensor的定义 以及减少cpu的操作详解
2020/06/23 Python
matplotlib之pyplot模块之标题(title()和suptitle())
2021/02/22 Python
新闻编辑自荐信
2013/11/03 职场文书
生物科学专业毕业生求职信
2014/06/02 职场文书
房展策划方案
2014/06/07 职场文书
2014年预算员工作总结
2014/12/05 职场文书
nginx location优先级的深入讲解
2021/03/31 Servers
golang正则之命名分组方式
2021/04/25 Golang
python tkinter Entry控件的焦点移动操作
2021/05/22 Python