使用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聊天室实例程序分享
Jan 05 Python
windows下python之mysqldb模块安装方法
Sep 07 Python
Python数据分析之双色球中蓝红球分析统计示例
Feb 03 Python
python取代netcat过程分析
Feb 10 Python
基于pandas数据样本行列选取的方法
Apr 20 Python
浅谈DataFrame和SparkSql取值误区
Jun 09 Python
django与小程序实现登录验证功能的示例代码
Feb 19 Python
Pandas实现DataFrame按行求百分数(比例数)
Dec 27 Python
TensorFlow加载模型时出错的解决方式
Feb 06 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
Feb 12 Python
python在不同条件下的输入与输出
Feb 13 Python
python 日志 logging模块详细解析
Mar 31 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
PHP4之COOKIE支持详解
2006/10/09 PHP
PHP 类型转换函数intval
2009/06/20 PHP
php中文乱码怎么办如何让浏览器自动识别utf-8
2014/01/15 PHP
php构造函数的继承方法
2015/02/09 PHP
使用EXT实现无刷新动态调用股票信息
2008/11/01 Javascript
一个关于jqGrid使用的小例子(行按钮)
2011/11/04 Javascript
分享XmlHttpRequest调用Webservice的一点心得
2012/07/20 Javascript
jquery 元素控制(追加元素/追加内容)介绍及应用
2013/04/21 Javascript
JavaScript自执行闭包的小例子
2013/06/29 Javascript
javascript弹出层输入框(示例代码)
2013/12/11 Javascript
Jquery遍历select option和添加移除option的实现方法
2016/08/26 Javascript
基于React实现表单数据的添加和删除详解
2017/03/14 Javascript
Vue Cli与BootStrap结合实现表格分页功能
2017/08/18 Javascript
浅谈用Webpack路径压缩图片上传尺寸获取的问题
2018/02/22 Javascript
node.js使用 http-proxy 创建代理服务器操作示例
2020/02/10 Javascript
element-ui tree结构实现增删改自定义功能代码
2020/08/31 Javascript
详解JavaScript的this指向和绑定
2020/09/08 Javascript
[05:01]3.19DOTA2发布会 我们都是刀塔人
2014/03/25 DOTA
[01:04]DOTA2上海特锦赛现场采访 FreeAgain遭众解说围攻
2016/03/25 DOTA
python MNIST手写识别数据调用API的方法
2018/08/08 Python
使用Python编写Prometheus监控的方法
2018/10/15 Python
Django logging配置及使用详解
2019/07/23 Python
使用Keras 实现查看model weights .h5 文件的内容
2020/06/09 Python
简单掌握CSS3将文字描边及填充文字颜色的方法
2016/03/07 HTML / CSS
法国时尚品牌乐都特瑞士站:La Redoute瑞士
2016/09/05 全球购物
英语师范专业毕业生自荐信
2013/09/21 职场文书
工程造价专业大学生自荐信
2013/10/01 职场文书
优秀导游先进事迹材料
2014/01/25 职场文书
人事专员工作职责
2014/02/22 职场文书
现场活动策划方案
2014/08/22 职场文书
2014年机关作风建设工作总结
2014/10/23 职场文书
2014年变电站工作总结
2014/12/19 职场文书
督导岗位职责
2015/02/04 职场文书
2015年公司后勤管理工作总结
2015/05/13 职场文书
经销商会议开幕词
2016/03/04 职场文书
解决vue中provide inject的响应式监听
2022/04/19 Vue.js