說明:
最近在做一個數據質量檢查平台,開發語言是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 就是我們的查詢結果了
