Python內(nèi)置資源包
在開發(fā)Python計算任務(wù)時,通常需要根據(jù)業(yè)務(wù)場景安裝如下資源包。以下資源包已經(jīng)預(yù)置至系統(tǒng)內(nèi),您在開發(fā)代碼過程中,只需要在代碼開始部分添加import 資源包名
語句即可,例如import configparser
。
內(nèi)置資源包列表
以下列表列出了Dataphin內(nèi)置的資源包,同時您也可以在Shell計算任務(wù)中運行pip list
命令查看內(nèi)置的資源包模塊。
資源包 | 資源包版本 | 適用場景 |
configparser | >=3.5.0 | 讀取配置文件。 |
DateTime | 無 | 數(shù)據(jù)處理。 |
hdfs | >=2.1.0 | Hadoop計算引擎下,使用HDFS。 |
jumpssh | 無 | 使用跳板機連接服務(wù)器。 |
mysql-connector-python | >=8.0.11 | 連接并操作MySQL。 |
numpy | 無 | 算法基礎(chǔ)處理。 |
pandas | 無 | 算法基礎(chǔ)處理。 |
psycopg2 | >=2.7.4 | 連接操作PostgreSQL。 |
pyhdfs | >=0.2.1 | Hadoop計算引擎下,使用PostgreSQL。 |
pyhs2 | >=0.6.0 | 連接并操作HDFS。 |
pyodps | >=0.7.16 | ODPS操作,適用ODPS。 |
pyspark | >=2.3.1 | Hadoop計算引擎下,使用Spark。 |
requests | >=2.4.0 | 算法基礎(chǔ)處理。 |
scikit-learn | 無 | 算法基礎(chǔ)處理。 |
scipy | 無 | 算法基礎(chǔ)處理。 |
setuptools | >=3.0 | Python基礎(chǔ)功能庫。 |
yarn-api-client | >=0.2.3 | Yarn-api客戶端。 |
Matplotlib | 無 | 算法基礎(chǔ)處理。 |
Dataphin 內(nèi)使用 PyHive和PyOdps。
在Dataphin內(nèi),除了支持本地方式使用PyHive和PyOdps外,還支持通過使用from dataphin import odps
和from dataphin import hivec
對象句柄方式進行使用。該方式解決了本地方式存在的以下問題:
如果Hive使用賬號密碼認證,就需要開發(fā)者可以獲取到賬號密碼。這容易造成賬號泄露,同時如果修改賬號密碼,需要同步更新程序或變量。
如果Hive使用Kerberos認證,除了開發(fā)者需要獲取keytab容易造成泄密和修改的問題外,Kerberos認證流程的代碼實現(xiàn)也比較復(fù)雜。
Dataphin無法對用戶做鑒權(quán),可以繞開Dataphin的權(quán)限體系。
無法查詢使用邏輯表。
PyHive和PyOdps語法使用范圍
支持查詢物理表。
支持查詢邏輯表。
支持調(diào)用系統(tǒng)Function和UDF。
支持空間變量名稱替換,
${project_name}
或${LD_name}
替換為真實名稱。支持全局變量和本地變量。
支持物理表DML和邏輯表DML。
支持物理表DDL。
支持對象鑒權(quán)。
hivec支持的方法
您可以通過使用以下代碼查看hivec
的方法。
from dataphin import hivec
print(dir(hivec))
hivec與pyhive.hive.Cursor
的同名方法一致:
執(zhí)行 SQL 語句:
execute
。獲取所有查詢結(jié)果:
fetchall
獲取指定行數(shù)的查詢結(jié)果:
fetchmany
。獲取一行查詢結(jié)果:
fetchone
。關(guān)閉cursor和connection:
close
。
使用示例
Hadoop計算引擎
通常在非Dataphin環(huán)境下,需要通過安裝PyHive后,使用import
導(dǎo)入hive
包來連接操作Hive。示例代碼如下:
# 加載包
from pyhive import hive
# 建立連接
conn = hive.connect(host = '100.100.***.100', # HiveServer
port = 10000, # 端口
username = 'xxx', # 賬號
database = 'xxx', # 數(shù)據(jù)庫
password = 'xxx') # 密碼
# 查詢
cursor = conn.cursor()
cursor.execute('select * from table limit 10')
for result in cursor.fetchall():
print(result)
# 關(guān)閉連接
cursor.close()
conn.close()
在Dataphin中您可以直接在Python計算任務(wù)通過from dataphin import hivec
導(dǎo)入預(yù)置資源包后操作Hive。示例代碼如下:
# 導(dǎo)入包
from dataphin import hivec
# 運行sql語句
hivec.execute("SELECT * FROM ${project_dev}.table WHERE ds != 0")
# 打印sql結(jié)果
for result in hivec.fetchall():
print(result)
MaxCompute計算引擎
MaxCompute計算引擎下,可以在Python計算任務(wù)中通過from dataphin import odps
導(dǎo)入預(yù)置資源包后操作MaxCompute。示例代碼如下:
# 加載包
from dataphin import odps
# 運行sql語句
odps.run_sql('SELECT * FROM ${project_dev}.table WHERE ds != 0')
# 以下寫法可打印結(jié)果
with odps.execute_sql('select 1').open_reader() as reader:
for record in reader:
print(record)