Anda dapat menggunakan lingkungan virtual Python kustom, paket Python pihak ketiga, paket JAR, dan file data dalam pekerjaan Python Flink. Topik ini menjelaskan cara menggunakan dependensi tersebut dalam pekerjaan Python Anda.
Informasi latar belakang
Topik ini menjelaskan cara menggunakan dependensi Python dalam skenario berikut:
Lingkungan Python pra-instal
Lingkungan yang sepenuhnya dikelola dilengkapi dengan Python yang telah dipasang sebelumnya. Versi yang tersedia adalah sebagai berikut:
Ververica Runtime (VVR) 8.0.10 dan versi sebelumnya: Python 3.7
VVR 8.0.11 dan versi setelahnya: Python 3.9
Untuk informasi lebih lanjut mengenai paket perangkat lunak pihak ketiga yang telah dipasang sebelumnya di lingkungan Python, lihat Pengembangan pekerjaan Python.
Beberapa paket Python pihak ketiga memiliki persyaratan terhadap versi GNU C Library (glibc). Versi glibc yang telah dipasang sebelumnya di lingkungan Flink yang sepenuhnya dikelola adalah sebagai berikut:
X86
VVR 8.x dan versi sebelumnya: glibc 2.17
VVR 11.x dan versi setelahnya: glibc 2.31
ARM
VVR 11.2 dan versi sebelumnya: glibc 2.17
VVR 11.3 dan versi setelahnya: glibc 2.31
Glibc mendukung kompatibilitas maju (forward compatibility). Oleh karena itu, versi glibc yang dibutuhkan oleh library Python pihak ketiga Anda tidak boleh lebih baru daripada versi glibc di lingkungan tersebut.
Gunakan lingkungan virtual Python kustom
VVR 4.x hanya mendukung lingkungan virtual Python 3.7. VVR 6.x dan versi setelahnya tidak memiliki batasan ini. Anda dapat menggunakan lingkungan virtual Python versi yang lebih baru.
Jika lingkungan Python pra-instal tidak memenuhi kebutuhan Anda, Anda dapat menggunakan versi Python kustom dengan lingkungan virtual Python. Setiap lingkungan virtual Python memiliki runtime Python lengkap, dan Anda dapat menginstal berbagai paket dependensi Python di dalamnya. Bagian ini menjelaskan cara menyiapkan lingkungan virtual Python.
Siapkan lingkungan virtual Python.
Di mesin lokal Anda, siapkan skrip setup-pyflink-virtual-env.sh. Isinya sebagai berikut.
X86
set -e # Download the miniforge.sh script. wget "https://github.com/conda-forge/miniforge/releases/download/25.11.0-1/Miniforge3-25.11.0-1-Linux-x86_64.sh" -O "miniforge.sh" # Add execute permissions to the miniforge.sh script. chmod +x miniforge.sh # Install miniforge. ./miniforge.sh -b source /root/miniforge3/bin/activate # Create a Python virtual environment. mamba create -n venv python=3.10 -y eval "$(mamba shell hook --shell bash)" # Activate the Python virtual environment. mamba activate venv # Install the PyFlink dependency. # update the PyFlink version if needed pip install "apache-flink==1.20.3" # Remove unnecessary JAR packages to reduce the package size. find /root/miniforge3/envs/venv/lib/python3.10/site-packages/pyflink/ -name *.jar | xargs rm # Deactivate the Conda Python virtual environment. mamba deactivate # Package the prepared Conda Python virtual environment. cd /root/miniforge3/envs/ && zip -r /root/venv.zip venvARM
set -e # Download the miniforge.sh script. wget "https://github.com/conda-forge/miniforge/releases/download/25.11.0-1/Miniforge3-25.11.0-1-Linux-aarch64.sh" -O "miniforge.sh" # Add execute permissions to the miniforge.sh script. chmod +x miniforge.sh # Install miniforge. ./miniforge.sh -b source /root/miniforge3/bin/activate # Create a Python virtual environment. mamba create -n venv python=3.10 -y eval "$(mamba shell hook --shell bash)" # Activate the Python virtual environment. mamba activate venv # Install the PyFlink dependency. # update the PyFlink version if needed yum install -y java-11-openjdk-devel export JAVA_HOME=/usr/lib/jvm/java-11 wget "https://raw.githubusercontent.com/apache/flink/release-1.20/flink-python/dev/dev-requirements.txt" -O dev-requirements.txt pip install -r dev-requirements.txt pip install "apache-flink==1.20.3" # Remove unnecessary JAR packages to reduce the package size. find /root/miniforge3/envs/venv/lib/python3.10/site-packages/pyflink/ -name *.jar | xargs rm # Deactivate the Conda Python virtual environment. mamba deactivate # Package the prepared Conda Python virtual environment. cd /root/miniforge3/envs && zip -r /root/venv.zip venvmamba create: Ubah versi Python ke versi yang Anda inginkan.
apache-flink: Ubah versi Flink ke versi yang sesuai dengan versi VVR pekerjaan Anda. Untuk informasi lebih lanjut tentang cara melihat versi Flink, lihat Manajemen dan operasi ruang kerja.
Di mesin lokal Anda, siapkan skrip build.sh. Isinya sebagai berikut.
#!/bin/bash set -e -x yum install -y zip wget cd /root/ bash /build/setup-pyflink-virtual-env.sh mv venv.zip /build/Di command line, jalankan perintah berikut untuk menyelesaikan instalasi lingkungan virtual Python.
X86
docker run -it --rm -v $PWD:/build -w /build quay.io/pypa/manylinux_2_28_x86_64 bash ./build.shARM
docker run -it --rm -v $PWD:/build -w /build quay.io/pypa/manylinux_2_28_aarch64 bash ./build.shSetelah menjalankan perintah ini, file bernama venv.zip akan dihasilkan. Contoh ini membuat lingkungan virtual untuk Python 3.10.
Anda juga dapat memodifikasi skrip di atas untuk menginstal paket Python pihak ketiga yang diperlukan dalam lingkungan virtual.
CatatanTopik ini menggunakan contoh pekerjaan pada VVR 11.x dan Python 3.10. Untuk menggunakan versi VVR yang berbeda atau menginstal versi Python yang berbeda untuk lingkungan virtual, Anda dapat mengubah parameter berikut:
Gunakan lingkungan virtual Python dalam pekerjaan Python.
Masuk ke Konsol Realtime Compute for Apache Flink.
Pada kolom Actions ruang kerja target, klik Console.
Di panel navigasi kiri, klik File Management dan unggah file venv.zip.
Pada halaman , klik nama pekerjaan target.
Pada tab Deployment Details, di bagian Basic Configuration, pilih file venv.zip untuk opsi Python Archives.
Jika pekerjaan SQL menggunakan fungsi user-defined (UDF) Python dalam lingkungan virtual, tambahkan konfigurasi berikut di bidang Other Configuration pada bagian Parameter Settings.
python.archives: oss://.../venv.zipDi bagian Parameter Settings, pada bidang Other Configuration, tambahkan konfigurasi yang menentukan path instalasi lingkungan virtual Python berdasarkan versi VVR pekerjaan Anda.
VVR 6.x dan versi setelahnya
python.executable: venv.zip/venv/bin/python python.client.executable: venv.zip/venv/bin/pythonVersi sebelum VVR 6.x
python.executable: venv.zip/venv/bin/python
Gunakan paket Python pihak ketiga
Dua skenario berikut menjelaskan cara menggunakan paket Python pihak ketiga:
Gunakan paket Python pihak ketiga yang dapat langsung diimpor
Jika paket Python pihak ketiga Anda Zip Safe, Anda dapat menggunakannya langsung dalam pekerjaan Python tanpa perlu instalasi. Ikuti langkah-langkah berikut:
Unduh paket Python pihak ketiga yang dapat langsung diimpor.
Buka halaman PyPI di browser Anda.
Di kotak pencarian, masukkan nama paket Python pihak ketiga target, misalnya apache-flink 1.20.3.
Pada hasil pencarian, klik nama hasil target.
Di panel navigasi kiri, klik Download files.
Klik nama paket yang berisi cp39-cp39m-manylinux1 untuk mengunduhnya.
Masuk ke Konsol Realtime Compute for Apache Flink.
Pada kolom Actions ruang kerja target, klik Console.
Di panel navigasi kiri, Anda dapat mengklik File Management untuk mengunggah paket Python pihak ketiga.
Pada halaman , klik . Untuk opsi Python Libraries, pilih paket Python pihak ketiga yang telah diunggah.
Klik Save.
Gunakan paket Python pihak ketiga yang memerlukan kompilasi
Jika paket Python pihak ketiga Anda berupa paket terkompresi dalam format tar.gz atau paket kode sumber yang diunduh dari lokasi lain, dan file setup.py ada di direktori root paket tersebut, biasanya paket tersebut perlu dikompilasi terlebih dahulu sebelum digunakan. Anda harus terlebih dahulu mengompilasi paket Python pihak ketiga tersebut di lingkungan yang kompatibel dengan Flink. Setelah itu, Anda dapat memanggil paket tersebut dalam pekerjaan Python Anda.
Kami menyarankan Anda menggunakan Python 3.9 dalam kontainer image quay.io/pypa/manylinux_2_28_x86_64 untuk mengompilasi paket Python pihak ketiga. Paket yang dihasilkan oleh kontainer ini kompatibel dengan sebagian besar lingkungan Linux. Untuk informasi lebih lanjut mengenai kontainer image ini, lihat manylinux.
CatatanPath instalasi untuk Python 3.9 adalah /opt/python/cp39-cp39/bin/python3.
Contoh berikut menunjukkan cara mengompilasi dan menggunakan paket Python pihak ketiga opencv-python-headless.
Kompilasi paket Python pihak ketiga.
Di mesin lokal Anda, siapkan file requirements.txt. Isinya sebagai berikut.
opencv-python-headless numpy<2Di mesin lokal Anda, siapkan skrip build.sh. Isinya sebagai berikut.
#!/bin/bash set -e -x yum install -y zip #PYBIN=/opt/python/cp37-cp37m/bin #PYBIN=/opt/python/cp38-cp38/bin PYBIN=/opt/python/cp39-cp39/bin #PYBIN=/opt/python/cp310-cp310/bin #PYBIN=/opt/python/cp311-cp311/bin "${PYBIN}/pip" install --target __pypackages__ -r requirements.txt cd __pypackages__ && zip -r deps.zip . && mv deps.zip ../ && cd .. rm -rf __pypackages__Di command line, jalankan perintah berikut.
X86
docker run -it --rm -v $PWD:/build -w /build quay.io/pypa/manylinux_2_28_x86_64 bash ./build.shARM
docker run -it --rm -v $PWD:/build -w /build quay.io/pypa/manylinux_2_28_aarch64 bash ./build.shSetelah perintah ini dijalankan, file bernama deps.zip akan dihasilkan. File ini merupakan paket Python pihak ketiga yang telah dikompilasi.
Anda juga dapat memodifikasi requirements.txt untuk menginstal paket Python pihak ketiga lain yang diperlukan. Selain itu, Anda dapat menentukan beberapa dependensi Python dalam file requirements.txt.
Gunakan paket Python pihak ketiga deps.zip dalam pekerjaan Python.
Masuk ke Konsol Realtime Compute for Apache Flink.
Pada kolom Actions ruang kerja target, klik Console.
Di panel navigasi kiri, klik Files, dan unggah deps.zip.
Pada halaman , klik nama pekerjaan target. Pada tab Deployment Details, di bagian Basic Configuration, klik Edit. Lalu, untuk opsi Python Libraries, pilih deps.zip.
Klik Save.
Gunakan paket JAR
Jika pekerjaan Python Flink Anda menggunakan kelas Java, seperti konektor atau Java UDF, Anda harus menentukan paket JAR untuk konektor atau Java UDF tersebut. Anda dapat melakukan langkah-langkah berikut:
Masuk ke Konsol Realtime Compute for Apache Flink.
Pada kolom Actions ruang kerja target, klik Console.
Di panel navigasi kiri, klik Files, dan unggah paket JAR yang akan digunakan.
Pada halaman , klik nama pekerjaan target. Pada tab Deployment Details, di bagian Basic Configuration, klik Edit. Lalu, untuk opsi Additional Dependencies, pilih paket JAR yang akan digunakan.
Di bagian Parameter Settings, pada bidang Other Configuration, tambahkan konfigurasi.
Sebagai contoh, untuk bergantung pada beberapa paket JAR bernama jar1.jar dan jar2.jar, konfigurasinya adalah sebagai berikut.
pipeline.classpaths: 'file:///flink/usrlib/jar1.jar;file:///flink/usrlib/jar2.jar'Klik Save.
Gunakan konektor bawaan, format data, dan Catalogs
Hanya pekerjaan yang berjalan pada VVR 11.2 atau versi setelahnya yang mendukung konektor bawaan, format data, dan Catalogs.
Untuk menggunakan konektor bawaan, format data, dan Catalogs dalam pekerjaan Python Flink, Anda dapat menentukannya sebagai berikut:
Di bagian Parameter Settings, pada bidang Other Configuration, tambahkan konfigurasi.
Sebagai contoh, untuk bergantung pada beberapa konektor bawaan bernama kafka dan sls, konfigurasinya adalah sebagai berikut. Untuk nama spesifik konektor bawaan, lihat dokumentasi masing-masing konektor di Konektor yang didukung.
pipeline.used-builtin-connectors: kafka;slsSebagai contoh, untuk bergantung pada beberapa format data bawaan bernama avro dan parquet, konfigurasinya adalah sebagai berikut. Untuk nama spesifik format data bawaan, lihat dokumentasi di Format data.
pipeline.used-builtin-formats: avro;parquetSebagai contoh, untuk bergantung pada beberapa Catalogs bawaan bernama hive-2.3.6 dan paimon, konfigurasinya adalah sebagai berikut. Untuk nama spesifik Catalogs bawaan, lihat dokumentasi Catalog yang sesuai di Data Management.
pipeline.used-builtin-catalogs: hive-2.3.6;paimonKlik Save.
Gunakan file data
Flink tidak mendukung debugging pekerjaan Python dengan mengunggah file data.
Dua skenario berikut menjelaskan cara menggunakan file data:
Menggunakan opsi Python Archives
Jika Anda memiliki banyak file data, Anda dapat mengemasnya ke dalam file ZIP dan menggunakannya dalam pekerjaan Python dengan mengikuti langkah-langkah berikut:
Masuk ke Konsol Realtime Compute for Apache Flink.
Pada kolom Actions ruang kerja target, klik Console.
Di panel navigasi kiri, klik File Management dan unggah paket ZIP file data target.
Pada halaman , klik nama pekerjaan target. Pada tab Deployment Details, di bagian Basic Configuration, klik Edit. Lalu, untuk opsi Python Archives, pilih paket ZIP file data yang akan digunakan.
Dalam UDF Python, Anda dapat mengakses file data sebagai berikut. Contoh ini mengasumsikan paket terkompresi yang berisi file data bernama mydata.zip.
def map(): with open("mydata.zip/mydata/data.txt") as f: ...
Menggunakan opsi Additional Dependencies
Jika Anda memiliki sedikit file data, Anda dapat menggunakannya dalam pekerjaan Python dengan mengikuti langkah-langkah berikut:
Masuk ke Konsol Realtime Compute for Apache Flink.
Pada kolom Actions ruang kerja target, klik Console.
Di panel navigasi kiri, klik Files, dan unggah file data target.
Pada halaman , klik nama pekerjaan target. Pada tab Deployment Details, di bagian Basic Configuration, klik Edit. Lalu, untuk opsi Additional Dependencies, pilih file data yang akan digunakan.
Dalam UDF Python, Anda dapat mengakses file data sebagai berikut. Kode berikut menggunakan file data bernama data.txt sebagai contoh.
def map(): with open("/flink/usrlib/data.txt") as f: ...
Referensi
Untuk informasi lebih lanjut tentang cara mengembangkan pekerjaan API Python, lihat Pengembangan pekerjaan Python.
Untuk contoh lengkap proses pengembangan pekerjaan Python Flink, lihat Quick Start untuk pekerjaan Python Flink.
Flink yang sepenuhnya dikelola juga mendukung pekerjaan SQL dan DataStream. Untuk informasi lebih lanjut tentang cara mengembangkan pekerjaan tersebut, lihat Peta pengembangan pekerjaan dan Pengembangan pekerjaan JAR.