微信搜索lxw1234bigdata | 邀请体验:数阅–数据管理、OLAP分析与可视化平台 | 赞助作者:赞助作者

Python3环境下Caravel连接SparkSQL(ThriftServer)

Spark lxw1234@qq.com 23911℃ 2评论

关键字:caravel、python3、hiveserver2、sparksql、spark thrift server、impyla

之前在Caravel中想通过pyhive连接Spark Thrift Server做查询分析,发现pyhive不支持python3。

这两天找到了Cloudera开源的impyla支持python3,impyla可以用来连接impala、hive,想试一下是否适用于Spark Thrift Server,试验结果是可用的。

本文介绍在Python3环境下,使用Caravel连接Spark Thrift Server,来完成Hive中数据的多维分析与可视化。

我测试使用的相关环境如下:

Caravel0.9.1(做过一些修改);

Python 3.5.1

apache-hive-2.1.0-bin

spark-2.0.0-bin-hadoop2.3

在Yarn上运行Spark Thrift Server

将hive-site.xml拷贝到$SPARK_HOME/conf下,进入$SPARK_HOME/sbin/目录,执行下面的命令:

./start-thriftserver.sh --master yarn --conf spark.driver.memory=3G --executor-memory 1G --num-executors 10

这样,便会在Yarn上运行Spark Thrift Server。

安装impyla

参照官网https://github.com/cloudera/impyla中的安装步骤执行:

pip install six
pip install bit_array
pip install thriftpy   
## thrift (on Python 2.x) or thriftpy (on Python 3.x)
pip install thrift_sasl
pip install sasl
pip install impyla

## 注意:还需要安装另外一个模块,官网上并没有给出(for python3):
pip install git+https://github.com/laserson/python-sasl.git@cython 

安装完后,可以使用下面的脚本来测试是否可以成功连接:

from impala.dbapi import connect
conn = connect(host='127.0.0.217', port=10001, user='liuxiaowen', password='', database='liuxiaowen', auth_mechanism='PLAIN')
cursor = conn.cursor()
cursor.execute('SELECT * FROM liuxiaowen.lxw_pbs_uv_fact LIMIT 100')
print(cursor.description)  # prints the result set's schema
results = cursor.fetchall()
print(results)

如果没有启用用户认证,密码留空即可。

注意:必须设置auth_mechanism=’PLAIN’

在Caravel中配置连接SparkThriftServer

caravel

数据库URI:impala://127.0.0.217:10001/liuxiaowen

其他Connect的参数需要填在engine_params中:

“engine_params”: {“connect_args”:{“auth_mechanism” : “PLAIN”, “user” : “kylin”, “password” : “xxxxxx”}}

测试连接之后即可看到Hive中的表。

配置好事实表模型之后,就可以进行自助多维分析了。

caravel

 

如果觉得本博客对您有帮助,请 赞助作者

转载请注明:lxw的大数据田地 » Python3环境下Caravel连接SparkSQL(ThriftServer)

喜欢 (8)
分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(2)个小伙伴在吐槽
  1. sqlalchemy报错Can't load plugin: sqlalchemy.dialects:impala,需要在caravel里面改代码吗
    aurora2016-11-29 14:54 回复
  2. I am using Spark 1.6.2 (from the Datastax Enterprise Edition) and Pythin 2.7 When I give >>> Conn = connect (host = '172.31.12.201', port = 7077, user = 'xxxx', password = 'xxxx1111', database = 'test_database', auth_mechanism = 'PLAIN') it just hangs and never comes out Can you pl. help.. I have followed above steps and I want to be able to connect to spark from Airbnb's Superset ------------ Python3环境下Caravel连接SparkSQL(ThriftServer)
    Santhavathi S2017-02-17 20:31 回复