使用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、PyCharm安装及使用方法(Mac版)详解
Apr 28 Python
Python爬虫DNS解析缓存方法实例分析
Jun 02 Python
Python 关于反射和类的特殊成员方法
Sep 14 Python
Python网络编程使用select实现socket全双工异步通信功能示例
Apr 09 Python
Selenium鼠标与键盘事件常用操作方法示例
Aug 13 Python
python中单例常用的几种实现方法总结
Oct 13 Python
python导包的几种方法(自定义包的生成以及导入详解)
Jul 15 Python
Django框架之DRF 基于mixins来封装的视图详解
Jul 23 Python
pytorch SENet实现案例
Jun 24 Python
详解python方法之绑定方法与非绑定方法
Aug 17 Python
Python selenium实现断言3种方法解析
Sep 08 Python
python中reload重载实例用法
Dec 15 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中处理mysql_fetch_assoc返回来的数组 不用foreach----echo
2011/05/04 PHP
php中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
2011/05/04 PHP
php构造函数实例讲解
2013/11/13 PHP
smarty自定义函数htmlcheckboxes用法实例
2015/01/22 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
2016/01/14 PHP
JQuery 实现的页面滚动时浮动窗口控件
2009/07/10 Javascript
JavaScript 闭包在封装函数时的简单分析
2009/11/28 Javascript
基于javascript滚动图片具体实现
2013/11/18 Javascript
使用CSS3的scale实现网页整体缩放
2014/03/18 Javascript
window.location的重写及判断location是否被重写
2014/09/04 Javascript
jquery 插件实现多行文本框[textarea]自动高度
2015/03/04 Javascript
jquery之别踩白块游戏的简单实现
2016/07/25 Javascript
浅谈React 属性和状态的一些总结
2016/11/21 Javascript
bootstrap按钮插件(Button)使用方法解析
2017/01/13 Javascript
JavaScript的继承实现小结
2017/05/07 Javascript
[55:42]VG vs VGJ.T 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
从零学python系列之从文件读取和保存数据
2014/05/23 Python
python调用机器喇叭发出蜂鸣声(Beep)的方法
2015/03/23 Python
python实现网站的模拟登录
2016/01/04 Python
Python在OpenCV里实现极坐标变换功能
2019/09/02 Python
Python 项目转化为so文件实例
2019/12/23 Python
Python selenium页面加载慢超时的解决方案
2020/03/18 Python
解决matplotlib.pyplot在Jupyter notebook中不显示图像问题
2020/04/22 Python
使用python对excel表格处理的一些小功能
2021/01/25 Python
navabi英国:设计师大码女装
2019/06/25 全球购物
英国领先的在线鱼贩:The Fish Society
2020/08/12 全球购物
巾帼文明岗申报材料
2014/05/01 职场文书
医学求职信
2014/05/28 职场文书
单位单身证明样本
2014/10/11 职场文书
巾帼标兵事迹材料
2014/12/26 职场文书
庆七一主持词
2015/06/29 职场文书
民事纠纷协议书
2016/03/23 职场文书
在CSS中映射鼠标位置并实现通过鼠标移动控制页面元素效果(实例代码)
2021/04/22 HTML / CSS
python文件目录操作之os模块
2021/05/08 Python
JavaScript 反射学习技巧
2021/10/16 Javascript
三种方式清除vue路由跳转router-link的历史记录
2022/04/10 Vue.js