使用python客户端访问impala的操作方式

 更新时间:2020年03月28日 09:36:40   作者:faith默默  
这篇文章主要介绍了使用python客户端访问impala的操作方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

因需要将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中列表list,元祖tuple和numpy中的array区别

    详谈Python中列表list,元祖tuple和numpy中的array区别

    下面小编就为大家分享一篇详谈Python中列表list,元祖tuple和numpy中的array区别,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • PaddleOCR 识别表情包文字示例详解

    PaddleOCR 识别表情包文字示例详解

    这篇文章主要为大家介绍了PaddleOCR 识别表情包文字示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Python pandas修剪函数clip使用实例探究

    Python pandas修剪函数clip使用实例探究

    在数据处理和分析中,经常面临着需要限制数据范围的情况,而pandas库提供的clip函数就是一个强大的工具,可以方便地对数据进行修剪,本文将深入介绍clip函数的基本用法、常见参数以及实际场景中的应用,以帮助大家充分理解并灵活运用这一功能
    2024-01-01
  • python代码实现猜拳小游戏

    python代码实现猜拳小游戏

    这篇文章主要为大家详细介绍了python代码实现猜拳小游戏,以文本文件存储与调用信息,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • PIL包中Image模块的convert()函数的具体使用

    PIL包中Image模块的convert()函数的具体使用

    这篇文章主要介绍了PIL包中Image模块的convert()函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • Python 数据的累加与统计的示例代码

    Python 数据的累加与统计的示例代码

    这篇文章主要介绍了Python 数据的累加与统计的示例代码,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-08-08
  • python爬取微信公众号文章

    python爬取微信公众号文章

    这篇文章主要为大家详细介绍了python爬虫实战案例,微信公众号文章的爬取,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • 详解Python3中的迭代器和生成器及其区别

    详解Python3中的迭代器和生成器及其区别

    本篇将介绍Python3中的迭代器与生成器,描述可迭代与迭代器关系,并实现自定义类的迭代器模式。非常具有实用价值,需要的朋友可以参考下
    2018-10-10
  • python中三种高阶函数(map,reduce,filter)详解

    python中三种高阶函数(map,reduce,filter)详解

    在Python中,函数其实也是一种数据类型,今天重点给大家介绍python中三种高阶函数(map,reduce,filter)的相关知识,感兴趣的朋友一起看看吧
    2021-10-10
  • Python协程操作之gevent(yield阻塞,greenlet),协程实现多任务(有规律的交替协作执行)用法详解

    Python协程操作之gevent(yield阻塞,greenlet),协程实现多任务(有规律的交替协作执行)用法详解

    这篇文章主要介绍了Python协程操作之gevent(yield阻塞,greenlet),协程实现多任务(有规律的交替协作执行)用法,结合实例形式较为详细的分析了协程的功能、原理及gevent、greenlet实现协程,以及协程实现多任务相关操作技巧,需要的朋友可以参考下
    2019-10-10

最新评论