使用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 相关文章推荐
win7安装python生成随机数代码分享
Dec 27 Python
简单了解python单例模式的几种写法
Jul 01 Python
详解PANDAS 数据合并与重塑(join/merge篇)
Jul 09 Python
python连接、操作mongodb数据库的方法实例详解
Sep 11 Python
Python爬虫实现使用beautifulSoup4爬取名言网功能案例
Sep 15 Python
Python实现线性判别分析(LDA)的MATLAB方式
Dec 09 Python
tensorflow之tf.record实现存浮点数数组
Feb 17 Python
解决Django no such table: django_session的问题
Apr 07 Python
Python csv文件记录流程代码解析
Jul 16 Python
python创建文本文件的简单方法
Aug 30 Python
python使用pywinauto驱动微信客户端实现公众号爬虫
May 19 Python
如何在Python项目中引入日志
May 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
Yii中CGridView禁止列排序的设置方法
2016/07/12 PHP
php安装ssh2扩展的方法【Linux平台】
2016/07/20 PHP
PHP实现的曲线统计图表示例
2016/11/10 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
关于Laravel-admin的基础用法总结和自定义model详解
2019/10/08 PHP
关于jQuery中的end()使用方法
2011/07/10 Javascript
jQuery源码分析-03构造jQuery对象-源码结构和核心函数
2011/11/14 Javascript
JQUERY对单选框(radio)操作的小例子
2013/04/25 Javascript
在父页面调用子页面的JS方法
2013/09/29 Javascript
jQuery简单实现仿京东分类导航层效果
2016/06/07 Javascript
JS去除空格和换行的正则表达式(推荐)
2016/06/14 Javascript
JavaScript学习笔记--常用的互动方法
2016/12/07 Javascript
AngularJS定时器的使用与移除操作方法【interval与timeout】
2016/12/14 Javascript
js实现显示手机号码效果
2017/03/09 Javascript
使用vue.js在页面内组件监听scroll事件的方法
2018/09/11 Javascript
[43:18]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
对于Python编程中一些重用与缩减的建议
2015/04/14 Python
Python构造自定义方法来美化字典结构输出的示例
2016/06/16 Python
python字符串的方法与操作大全
2018/01/30 Python
python批量下载网站马拉松照片的完整步骤
2018/12/05 Python
Django 框架模型操作入门教程
2019/11/05 Python
python3 BeautifulSoup模块使用字典的方法抓取a标签内的数据示例
2019/11/28 Python
Python脚本实现监听服务器的思路代码详解
2020/05/28 Python
python3.7 openpyxl 在excel单元格中写入数据实例
2020/09/01 Python
使用python-cv2实现视频的分解与合成的示例代码
2020/10/26 Python
详解Python利用configparser对配置文件进行读写操作
2020/11/03 Python
CSS3新增布局之: flex详解
2020/06/18 HTML / CSS
英国领先的NHS批准的在线药店:Pharmacy2U
2017/01/06 全球购物
远程Wi-Fi宠物监控相机:Petcube
2017/04/26 全球购物
迎新晚会主持词
2014/03/24 职场文书
俞敏洪励志演讲稿
2014/04/29 职场文书
小学生推普周国旗下讲话稿
2014/09/21 职场文书
领导干部作风整顿剖析材料
2014/10/11 职场文书
乡镇司法所2015年度工作总结
2015/10/14 职场文书
mysql使用FIND_IN_SET和group_concat两个方法查询上下级机构
2022/04/20 MySQL
python获取带有返回值的多线程
2022/05/02 Python