知识库 : 如何在舆情系统中发挥Impala的计算能力

 

一、背景介绍

Impala是Cloudera公司开发的基于Hadoop平台的MPP分布式查询引擎,由于查询过程中不启用MapReduce任务,而是直接在内存中进行计算,所以查询性能要比Hive高出几十倍。

在舆情系统中,我们使用Impala来处理大量的电商平台商品、评论等数据,为舆情系统提供了强大的计算能力。

下面我们来一起看一下舆情系统的程序是如何访问Impala的。

 

二、Impala的Python客户端Impyla

舆情系统是基于Python语言开发的,Cloudera公司官方提供了基于Python语言的Impala客户端:Impyla(https://github.com/cloudera/impyla)。

       Impyla具有轻量化、易安装、标准化等特点,通过与HiveServer2服务连接来访问Impala和Hive数据库,支持Kerberos、LDAP和SSL。

三、安装Impyla

       Impyla支持通过pip进行安装,在生产环境中使用时,建议首先通过virtualenvwrapper来管理不同环境中的依赖包版本(可参考:http://ae.yyuap.com/pages/viewpage.action?pageId=920474)。

       Impyla的安装命令如下:

       pip install impyla

 

       也可以通过源码方式进行安装,具体命令如下:

       git clone https://github.com/cloudera/impyla.git

       cd impyla

       python setup.py install

四、使用Impyla查询数据

       Impyla的使用方式与连接MySQL或SQLite等数据库的操作方式类似,下面看一下示例程序:

from impala.dbapi import connect

conn = connect(host=’ip_address’, port=21050)

cursor = conn.cursor()

cursor.execute('SELECT * FROM mytable LIMIT 100')

results = cursor.fetchall()

 

       在上面这段程序中,首先在程序中载入Impyla的对象,之后建立与Impala的连接,使用创建连接后得到的对象执行指定的SQL语句,最后调用fetchall()方法来获取全部数据,以便做后续处理。

五、数据格式转换

       同时,Impyla还支持将查询结果转换为pandas的DataFrame格式,pandas是基于Python语言的数据分析和科学计算工具,数据转换成DataFrame格式后可以方便的用于跟matplotlib、scikit-learn等数据分析工具的集成。

       示例如下:

from impala.util import as_pandas

df = as_pandas(cur)