在開發Python計算任務時,通常需要根據業務情境安裝如下資源套件。以下資源套件已經預置至系統內,您在開發代碼過程中,只需要在代碼開始部分添加import 資源套件名語句即可,例如import configparser。
內建資源套件列表
以下列表列出了Dataphin內建的資源套件,同時您也可以在Shell計算任務中運行pip list命令查看內建的資源套件模組。
資源套件 | 資源套件版本 | 適用情境 |
configparser | >=3.5.0 | 讀取設定檔。 |
DateTime | 無 | 資料處理。 |
hdfs | >=2.1.0 | Hadoop計算引擎下,使用HDFS。 |
jumpssh | 無 | 使用跳板機串連伺服器。 |
mysql-connector-python | >=8.0.11 | 串連並操作MySQL。 |
numpy | 無 | 演算法基礎處理。 |
pandas | 無 | 演算法基礎處理。 |
psycopg2 | >=2.7.4 | 串連操作PostgreSQL。 |
pyhdfs | >=0.2.1 | Hadoop計算引擎下,使用HDFS。 |
pyhs2 | >=0.6.0 | 串連並操作HDFS。 |
pyodps | >=0.7.16 | ODPS操作,適用ODPS。 |
pyspark | >=2.3.1 | Hadoop計算引擎下,使用Spark。 |
requests | >=2.4.0 | 演算法基礎處理。 |
scikit-learn | 無 | 演算法基礎處理。 |
scipy | 無 | 演算法基礎處理。 |
setuptools | >=3.0 | Python基礎功能庫。 |
yarn-api-client | >=0.2.3 | Yarn-api用戶端。 |
Matplotlib | 無 | 演算法基礎處理。 |
Dataphin 內使用 PyHive和PyOdps。
在Dataphin內,除了支援本地方式使用PyHive和PyOdps外,還支援通過使用from dataphin import odps和from dataphin import hivec物件控點方式進行使用。該方式解決了本地方式存在的以下問題:
如果Hive使用帳號密碼認證,就需要開發人員可以擷取到帳號密碼。這容易造成帳號泄露,同時如果修改帳號密碼,需要同步更新程式或變數。
如果Hive使用Kerberos認證,除了開發人員需要擷取keytab容易造成泄密和修改的問題外,Kerberos認證流程的代碼實現也比較複雜。
Dataphin無法對使用者做鑒權,可以繞開Dataphin的許可權體系。
無法查詢使用邏輯表。
PyHive和PyOdps文法使用範圍
支援查詢物理表。
支援查詢邏輯表。
支援調用系統Function和UDF。
支援空間變數名稱替換,
${project_name}或${LD_name}替換為真實名稱。支援全域變數和本地變數。
支援物理表DML和邏輯表DML。
支援物理表DDL。
支援對象鑒權。
hivec支援的方法
您可以通過使用以下代碼查看hivec的方法。
from dataphin import hivec
print(dir(hivec))hivec與pyhive.hive.Cursor的同名方法一致:
執行 SQL 陳述式:
execute。擷取所有查詢結果:
fetchall擷取指定行數的查詢結果:
fetchmany。擷取一行查詢結果:
fetchone。關閉cursor和connection:
close。
使用樣本
Hadoop計算引擎
通常在非Dataphin環境下,需要通過安裝PyHive後,使用import匯入hive包來串連操作Hive。範例程式碼如下:
# 載入包
from pyhive import hive
# 建立串連
conn = hive.connect(host = '100.100.***.100', # HiveServer
port = 10000, # 連接埠
username = 'xxx', # 帳號
database = 'xxx', # 資料庫
password = 'xxx') # 密碼
# 查詢
cursor = conn.cursor()
cursor.execute('select * from table limit 10')
for result in cursor.fetchall():
print(result)
# 關閉串連
cursor.close()
conn.close()在Dataphin中您可以直接在Python計算任務通過from dataphin import hivec匯入預置資源套件後操作Hive。範例程式碼如下:
# 匯入包
from dataphin import hivec
# 運行sql語句
hivec.execute("SELECT * FROM ${project_dev}.table WHERE ds != 0")
# 列印sql結果
for result in hivec.fetchall():
print(result)MaxCompute計算引擎
MaxCompute計算引擎下,可以在Python計算任務中通過from dataphin import odps匯入預置資源套件後操作MaxCompute。範例程式碼如下:
# 載入包
from dataphin import odps
# 運行sql語句
odps.run_sql('SELECT * FROM ${project_dev}.table WHERE ds != 0')
# 以下寫法可列印結果
with odps.execute_sql('select 1').open_reader() as reader:
for record in reader:
print(record)