本文為您介紹Flink Python API作業開發的背景資訊、使用限制、開發方法、調試方法和連接器使用等。
背景資訊
Flink Python作業需要您在本地完成開發工作,Python作業開發完成後,再在Flink開發控制台上部署並啟動才能看到業務效果。整體的操作流程詳情請參見Flink Python作業快速入門。
Flink工作空間已安裝下列軟體包。
軟體包 | 版本 |
apache-beam | 2.23.0 |
avro-python3 | 1.9.1 |
certifi | 2020.12.5 |
cloudpickle | 1.2.2 |
crcmod | 1.7 |
cython | 0.29.16 |
dill | 0.3.1.1 |
docopt | 0.6.2 |
fastavro | 0.23.6 |
future | 0.18.2 |
grpcio | 1.29.0 |
hdfs | 2.6.0 |
httplib2 | 0.17.4 |
idna | 2.10 |
jsonpickle | 1.2 |
mock | 2.0.0 |
numpy | 1.19.5 |
oauth2client | 3.0.0 |
pandas | 0.25.3 |
pbr | 5.5.1 |
pip | 20.1.1 |
protobuf | 3.15.3 |
py4j | 0.10.8.1 |
pyarrow | 0.17.1 |
pyasn1-modules | 0.2.8 |
pyasn1 | 0.4.8 |
pydot | 1.4.2 |
pymongo | 3.11.3 |
pyparsing | 2.4.7 |
python-dateutil | 2.8.0 |
pytz | 2021.1 |
requests | 2.25.1 |
rsa | 4.7.2 |
setuptools | 47.1.0 |
six | 1.15.0 |
typing-extensions | 3.7.4.3 |
urllib3 | 1.26.3 |
wheel | 0.36.2 |
使用限制
由於Flink受部署環境、網路環境等因素的影響,所以開發Python作業,需要注意以下限制:
僅支援開源Flink V1.13及以上版本。
Flink工作空間已預裝了Python 3.7.9,且Python環境中已預裝了Pandas、NumPy、PyArrow等常用的Python庫。因此,您需要在Python 3.7及以上版本開發代碼。
Flink運行環境僅支援JDK 8和JDK 11,如果Python作業中依賴第三方JAR包,請確保JAR包相容。
VVR 4.x僅支援開源Scala V2.11版本,VVR 6.x及以上版本僅支援開源Scala V2.12版本。如果Python作業中依賴第三方JAR包,請確保使用Scala版本對應的JAR包依賴。
作業開發
開發參考
您可以參見以下文檔在本地完成Flink業務代碼開發,開發完成後您需要將其上傳到Flink開發控制台,並部署上線作業。
Apache Flink V1.17業務代碼開發,請參見Flink Python API開發指南。
Apache Flink編碼過程中遇到的問題及解決方案,請參見常見問題。
作業調試
您可以在Python自訂函數的代碼實現中,通過logging的方式,輸出日誌資訊,方便後期問題定位,樣本如下。
@udf(result_type=DataTypes.BIGINT())
def add(i, j):
logging.info("hello world")
return i + j
日誌輸出後,您可以在TaskManager的記錄檔查看。
連接器使用
Flink所支援的連接器列表,請參見支援的連接器。連接器使用方法如下:
單擊目標工作空間操作列下的控制台。
在左側導覽列,單擊檔案管理。
單擊上傳資源,選擇您要上傳的目標連接器的Python包。
您可以上傳您自己開發的連接器,也可以上傳Flink提供的連接器。Flink提供的連接器官方Python包的下載地址,請參見Connector列表。
在
頁面,單擊 ,附加依賴檔案項選擇目標連接器的Python包,配置其他參數並部署作業。單擊部署的作業名稱,在部署詳情頁簽運行參數配置地區,單擊編輯,在其他配置中,添加Python連接器包位置資訊。
如果您的作業需要依賴多個連接器Python包,例如依賴的2個包的名字分別為connector-1.jar和connector-2.jar,則配置資訊如下。
pipeline.classpaths: 'file:///flink/usrlib/connector-1.jar;file:///flink/usrlib/connector-2.jar'
相關文檔
Flink Python作業的完整開發流程樣本,請參見Flink Python作業快速入門。
在Flink Python作業中使用自訂的Python虛擬環境、第三方Python包、JAR包和資料檔案,詳情請參見使用Python依賴。
Realtime ComputeFlink版還支援運行SQL和DataStream作業,開發方法請參見SQL作業開發和JAR作業開發。