Python调用jdbcDriver连接其他数据源
原因
使用python的pyhive pyhs2之类的库,在windows上一直无法正常运行
sasl的库依赖问题
采用折中的方式实现与远端hive的通信
-
连接hive
- 下载hive-jdbc-1.1.0-cdh5.12.1-standalone.jar的驱动包
- pip3 install jaydebeapi 安装python依赖
- 编写程序
jdbc.pyimport jaydebeapi import os class Jdbc: #prepared sql base_sql = [ "set hive.mapred.mode=nonstrict" ]
def query(self, sql, db = 'default'):
url = 'jdbc:hive2://host:port/' + db
dirver = 'org.apache.hive.jdbc.HiveDriver'
DIR = os.getcwd() + '/'
jarFile = [
DIR + 'hive-jdbc-1.1.0-cdh5.12.1-standalone.jar',
]
conn = jaydebeapi.connect(dirver, url, ['hive', 'hive'], jarFile)
curs = conn.cursor()
for _sql in self.base_sql:
curs.execute(_sql)
curs.execute(sql)
result = curs.fetchall()
curs.close()
conn.close()
return resulttest case
res=Jdbc().query('select 1')
print(res)**结果如下** python3 jdbc.py 输出 [(1,)]