说明:
最近在做一个数据质量检查平台,开发语言是Python,环境是centos7,用的框架是Django,因为需要进行kudu数据库连接,在网上找到了相关能用的连接代码。
网上很多不负责任的博客,有很多代码都不能使用了。
在总结实验之后,在这里分享记录一下:(如不能使用请联系微信:LivPzs)
- 需要jaydebeapi包; pip install jaydebeapi 安装;
- 需要一个Impala的jar包; 链接: https://pan.baidu.com/s/1Ef4aFwyoBVBM2G9wDIntFQ 密码: u2jf
- 需要连接驱动; 字符串: 'com.cloudera.impala.jdbc41.Driver'
- 需要连接url; 如:jdbc:impala://192.168.201.88:21020/default;AuthMech=3
- 需要用户名和密码; 如:1234, 1234
连接函数代码:
# 导入jaydebeapi包 import jaydebeapi # 连接url ,用户名,密码, 驱动, sql, jar包地址 def get_kudu_info(conn_url, user, pwd, driver, sql_str, jar_addr): """查询kudu""" # 创建连接 conn = jaydebeapi.connect(driver, conn_url, [user, pwd], jar_addr) # 获取游标 cursor = conn.cursor() # 执行sql cursor.execute(sql_str) # 获取执行结果 result = curs.fetchall() # 关闭游标 cursor.close() # 关闭连接 conn.close() # 返回结果 return result
调用演示:
1 # -----------------------------------上面的连接函数 ------------------------------------ 2 # 导入jaydebeapi包 3 import jaydebeapi 4 5 # 连接url ,用户名,密码, 驱动, sql, jar包地址 6 def get_kudu_info(conn_url, user, pwd, driver, sql_str, jar_addr): 7 """查询kudu""" 8 # 创建连接 9 conn = jaydebeapi.connect(driver, conn_url, [user, pwd], jar_addr) 10 # 获取游标 11 cursor = conn.cursor() 12 # 执行sql 13 cursor.execute(sql_str) 14 # 获取执行结果 15 result = curs.fetchall() 16 # 关闭游标 17 cursor.close() 18 # 关闭连接 19 conn.close() 20 # 返回结果 21 return result 22 23 24 25 # ----------------------------------------开始调用--------------------------------------- 26 # 连接url 27 conn_url = jdbc:impala://192.168.201.88:21150/default;AuthMech=3 28 29 # 用户名密码 30 username = 'root' 31 password = '' 32 33 # 驱动 34 driver_str = 'com.cloudera.impala.jdbc41.Driver' 35 36 #查询sql 37 database_abbr = 'describe sjjsq_db_kudu' # 库名 38 table_name = 'dwa_base_tzfxx' # 表名 39 sql_str = f"""describe {database_abb}.{table_name}""" 40 41 # impala jar包地址 42 jar_addr = '/home/app/py/ImpalaJDBC41.jar' 43 44 # 开始调用 45 query_result = get_kudu_info(conn_url, username, password, driver_str, sql_str, jar_addr) 46 47 # query_result 就是我们的查询结果了