Python调用jdbcDriver连接其他数据源

原因

使用python的pyhive pyhs2之类的库,在windows上一直无法正常运行
sasl的库依赖问题

采用折中的方式实现与远端hive的通信

  1. 连接hive

    1. 下载hive-jdbc-1.1.0-cdh5.12.1-standalone.jar的驱动包
    2. ​pip3 install jaydebeapi 安装python依赖
    3. 编写程序
      jdbc.py

      
      import 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 result

    test case

    res=Jdbc().query('select 1')
    print(res)

    
    **结果如下**
    python3  jdbc.py
    输出
    [(1,)]

同理可以推衍到其他数据源