使用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 ElementTree 基本读操作示例
Apr 09 Python
使用IPython来操作Docker容器的入门指引
Apr 08 Python
python+django快速实现文件上传
Oct 24 Python
简单谈谈Python流程控制语句
Dec 04 Python
python实现按任意键继续执行程序
Dec 30 Python
Python简单实现两个任意字符串乘积的方法示例
Apr 12 Python
对Python中的@classmethod用法详解
Apr 21 Python
对dataframe数据之间求补集的实例详解
Jan 30 Python
python设置环境变量的原因和方法
Jun 24 Python
Pycharm连接远程服务器并实现远程调试的实现
Aug 02 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
Sep 20 Python
scrapy结合selenium解析动态页面的实现
Sep 28 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
来自phpguru得Php Cache类源码
2010/04/15 PHP
php 操作调试的方法
2012/07/12 PHP
thinkPHP自定义类实现方法详解
2016/11/30 PHP
Jquery.Form 异步提交表单的简单实例
2014/03/03 Javascript
改变隐藏的input中value值的方法
2014/03/19 Javascript
jquery自动填充勾选框即把勾选框打上true
2014/03/24 Javascript
jquery通过select列表选择框对表格数据进行过滤示例
2014/05/07 Javascript
JavaScript使用shift方法移除素组第一个元素实例分析
2015/04/06 Javascript
深入剖析JavaScript中的函数currying柯里化
2016/04/29 Javascript
Three.js学习之Lamber材质和Phong材质
2016/08/04 Javascript
推荐10款扩展Web表单的JS插件
2017/12/25 Javascript
微信小程序日期选择器实例代码
2018/07/18 Javascript
vue组件之间通信方式实例总结【8种方式】
2019/02/22 Javascript
JS学习笔记之贪吃蛇小游戏demo实例详解
2019/05/29 Javascript
Vue封装的组件全局注册并引用
2019/07/24 Javascript
JavaScript实现移动端带transition动画的轮播效果
2020/03/24 Javascript
[04:40]2016个国际邀请赛中国区预选赛场地——华西村观战指南
2016/06/25 DOTA
[01:28:24]NAVI vs VG Supermajor 败者组 BO3 第三场 6.5
2018/06/06 DOTA
Python发送Email方法实例
2014/08/21 Python
Python中字典的基础知识归纳小结
2015/08/19 Python
Google开源的Python格式化工具YAPF的安装和使用教程
2016/05/31 Python
Python 备份程序代码实现
2017/03/06 Python
Django处理文件上传File Uploads的实例
2018/05/28 Python
实用自动化运维Python脚本分享
2018/06/04 Python
浅谈python累加求和+奇偶数求和_break_continue
2020/02/25 Python
pandas使用函数批量处理数据(map、apply、applymap)
2020/11/27 Python
Python爬虫+Tkinter制作一个翻译软件的示例
2021/02/20 Python
北美大型运动类产品商城:Champs Sports
2017/01/12 全球购物
Maisons du Monde德国:法国家具和装饰的市场领导者
2019/07/26 全球购物
西班牙鞋子和箱包在线销售网站:zapatos.es
2020/02/17 全球购物
护士个人自我鉴定
2014/03/24 职场文书
大学毕业生求职自荐书
2014/06/05 职场文书
2014年电话销售工作总结
2014/12/01 职场文书
天鹅湖观后感
2015/06/09 职场文书
素质教育学习心得体会
2016/01/19 职场文书
《蟋蟀的住宅》教学反思
2016/02/17 职场文书