linux服务器上cloudera:cdh5.8使用python连接hiveServer2

来源:互联网 发布:淘宝网做生意 编辑:程序博客网 时间:2024/06/05 17:41

1、下载:Python-3.5.0.tar.xz  

并上传到hiveServer2服务器:/software目录下

2、解压: 

cd /software

tar Jxvf Python-3.5.0.tar.xz  

cd Python-3.5.0

./configure --prefix=/usr/local/python3

make && make install

发现会报错:Ignoring ensurepip failure: pip 7.1.2 requires SSL/TLS  不用管!继续。。。。(或者你尝试看看能否解决:yum install openssl-devel-----)

为啥不用管:因为cdh5.8自带有pip。直接使用即可!

3、做软连接:ln -s /usr/local/python3/bin/python3.5 /usr/local/bin/python3


4、下载:pyhs2-master.zip  上传到目录: /software/   

解压: unzip pyhs2-master.zip

使用cdh自带pip安装pyhs2: /opt/cloudera/parcels/CDH-5.8.3-1.cdh5.8.3.p0.2/lib/hue/build/env/bin/pip install /software/pyhs2-master/

否则报错:ImportError: No module named pyhs2

5、设置PYTHONPATH:export PYTHONPATH=/usr/lib/python2.6/site-packages --不够完整后面会重新设置!!!

6、复制cdh的hive包py到指定目录:scp -r /opt/cloudera/parcels/CDH-5.8.3-1.cdh5.8.3.p0.2/lib/hive/lib/py/* /usr/lib/python2.6/site-packages/

7、ImportError: No module named sasl 错误解决:

执行:/opt/cloudera/parcels/CDH-5.8.3-1.cdh5.8.3.p0.2/lib/hue/build/env/bin/pip install sasl 发现 cdh已经安装好了!

Requirement already satisfied (use --upgrade to upgrade): sasl in /opt/cloudera/parcels/CDH-5.8.3-1.cdh5.8.3.p0.2/lib/hue/build/env/lib/python2.6/site-packages/sasl-0.1.1-py2.6-linux-x86_64.egg 直接使用cdh已经存在的sasl即可!!

重新设置 PYTHONPATH中间以冒号隔开:export PYTHONPATH=/usr/lib/python2.6/site-packages  /opt/cloudera/parcels/CDH-5.8.3-1.cdh5.8.3.p0.2/lib/hue/build/env/lib/python2.6/site-packages


8:测试代码:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import pyhs2


with pyhs2.connect(host='10.253.***.**',
                   port=10000,
                   authMechanism="PLAIN",
                   user='root',
                   password='******',
                   database='default') as conn:
    with conn.cursor() as cur:
        # Show databases
        print cur.getDatabases()


        # Execute query
        cur.execute("select * from t1apl")


        # Return column info from query
        print cur.getSchema()


        # Fetch table results
        for i in cur.fetch():
            print i

9:结果:成功!!!






0 0
原创粉丝点击