Realtime Compute for Apache Flink için Python dağıtımlarında özel Python sanal ortamları, üçüncü taraf Python paketleri, JAR paketleri ve veri dosyalarını kullanabilirsiniz. Bu konuda, bu bağımlılıkların Python dağıtımlarında nasıl kullanılacağı açıklanmaktadır.
Genel Bakış
Aşağıdaki bölümlerde verilen talimatlara göre Python bağımlılıklarını kullanabilirsiniz:
Önceden yüklenmiş Python ortamı
Tam yönetilen Flink ortamı, önceden yüklenmiş bir Python ortamı ile birlikte gelir. Python sürümleri aşağıdaki gibidir:
VVR 8.0.10 ve önceki sürümler: Python 3.7
VVR 8.0.11 veya sonraki sürümler ancak VVR 11.7'den önceki sürümler: Python 3.9
VVR 11.7 ve sonraki sürümler: Python 3.9, Python 3.10 ve Python 3.11
Python ortamındaki önceden yüklenmiş üçüncü taraf paketler için bkz. Python taslağı geliştirme.
Bazı üçüncü taraf Python paketlerinin glibc sürüm gereksinimleri vardır. Tam yönetilen Flink ortamındaki önceden yüklenmiş glibc sürümleri aşağıdaki gibidir:
X86
VVR 8.x ve önceki sürümler: glibc 2,17
VVR 11.x ve sonraki sürümler: glibc 2,31
ARM
VVR 11.2 ve önceki sürümler: glibc 2,17
VVR 11.3 ve sonraki sürümler: glibc 2,31
Glibc ileriye dönük uyumluluğu destekler. Kullandığınız üçüncü taraf Python paketlerinin gerektirdiği glibc sürümü, ortamdaki glibc sürümünden daha yeni olmamalıdır.
Özel Python sanal ortamı kullanma
Ververica Runtime (VVR) 4.X sürümünde yalnızca Python 3.7 sanal ortamlarını kullanabilirsiniz. VVR 6.X veya sonraki sürümlerde ise daha yeni Python sürümlerinin sanal ortamlarını kullanabilirsiniz.
Önceden yüklenmiş Python ortamı ihtiyaçlarınızı karşılamıyorsa, Python sanal ortamları aracılığıyla özel bir Python sürümü kullanabilirsiniz. Her Python sanal ortamı eksiksiz bir Python çalışma zamanı ortamı sağlar. Bir sanal ortama bir dizi Python bağımlılık paketi yükleyebilirsiniz. Aşağıdaki bölümde bir Python sanal ortamının nasıl hazırlanacağı açıklanmaktadır.
-
Bir Python sanal ortamı hazırlayın.
-
Yerel cihazınızda setup-pyflink-virtual-env.sh betiğini hazırlayın. Aşağıdaki kod, betiğin içeriğini göstermektedir.
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 execution 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. pip install "ververica-flink==11.7.0" # For VVR 11.5 and earlier, no dedicated PyPI package is available. Install the open-source PyFlink instead: # pip install "apache-flink==1.20.3" "setuptools<81" # Remove unnecessary JAR files 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 execution 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. 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 "ververica-flink==11.7.0" # For VVR 11.5 and earlier, no dedicated PyPI package is available. Install the open-source PyFlink instead: # pip install "apache-flink==1.20.3" "setuptools<81" # Remove unnecessary JAR files 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 venvNotBu konuda dağıtım VVR 11.7 kullanır ve Python 3.10 sanal ortamında çalıştırılır. Farklı bir VVR sürümü kullanmak veya başka bir Python sürümünün sanal ortamını yüklemek istiyorsanız aşağıdaki parametreleri değiştirmeniz gerekir:
mamba create: İstediğiniz Python sürümüne göre değiştirin.
-
pip install:
VVR 11.6 ve sonraki sürümler: ververica-flink paketini yükleyin ve sürümü dağıtımınızın VVR sürümüyle eşleşecek şekilde değiştirin.
VVR 11.5 ve önceki sürümler: apache-flink paketini yükleyin ve sürümü dağıtımınızın VVR sürümüne karşılık gelen Flink sürümüyle değiştirin. Flink sürümünü görüntüleme hakkında daha fazla bilgi için bkz. Depolama yönetimi.
-
Yerel cihazınızda build.sh betiğini hazırlayın. Aşağıdaki kod, betiğin içeriğini göstermektedir.
#!/bin/bash set -e -x yum install -y zip wget cd /root/ bash /build/setup-pyflink-virtual-env.sh mv venv.zip /build/ -
CLI'da Python sanal ortamını yüklemek için aşağıdaki komutu çalıştırın:
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.shKomutu çalıştırdıktan sonra venv.zip adlı bir dosya oluşturulur. Bu örnekte Python 3.10 sanal ortamı kullanılmaktadır.
Gerekli üçüncü taraf Python paketini sanal ortama yüklemek için yukarıdaki betiği de değiştirebilirsiniz.
-
-
Python dağıtımlarında Python sanal ortamını kullanın.
Realtime Compute for Apache Flink konsolu üzerinde oturum açın.
Fully Managed Flink sekmesinde yönetmek istediğiniz çalışma alanını bulun ve Actions sütunundaki Console seçeneğine tıklayın.
Sol gezinme bölmesinde Artifacts seçeneğine tıklayın. Artifacts sayfasında Upload Artifact seçeneğine tıklayın. Açılan iletişim kutusunda venv.zip paketini seçin.
sayfasında istediğiniz işin adına tıklayın.
-
Configuration sekmesinde Basic bölümünün sağ üst köşesindeki Edit seçeneğine tıklayın ve Python Archives açılır listesinden
venv.zippaketini seçin.Dağıtım, Python kullanıcı tanımlı işlevlerini (UDF'ler) kullanması gereken bir SQL dağıtımıysa Parameters bölümünün sağ üst köşesindeki Edit seçeneğine tıklayın ve aşağıdaki yapılandırmayı Other Configuration alanına ekleyin:
python.archives: oss://.../venv.zip -
Parameters bölümünde, dağıtımınızın VVR sürümüne göre belirtilen Python sanal ortamının yükleme yoluna ilişkin yapılandırma bilgilerini Other Configuration alanına ekleyin.
-
VVR 6.X veya sonraki sürümler
python.executable: venv.zip/venv/bin/python python.client.executable: venv.zip/venv/bin/python -
VVR 6.X'ten önceki bir altyapı sürümü
python.executable: venv.zip/venv/bin/python
-
Üçüncü taraf Python paketi kullanma
requirements.txt kullanarak bağımlılıkları yükleme
VVR 11.9.preview.1 sürümünden itibaren Python işleri requirements.txt dosyasında üçüncü taraf Python paketlerini bildirebilir. İş başladığında sistem, dosyada bildirilen bağımlılıkları yüklemek için pip'i çalıştırır ve yüklenen paketleri Python worker'ın PYTHONPATH değişkenine ekler. Aşağıdaki adımları uygulayın:
-
requirements.txtdosyasını hazırlayın.Bilgisayarınızda
requirements.txtdosyasını oluşturun ve üçüncü taraf bağımlılıklarını pip requirements biçiminde bildirin.package-a==1.2.3 package-b==4.5.6requirements.txtdosyasında yalnızca iş tarafından kullanılan üçüncü taraf paketleri bildirin. VVR'de önceden yüklenmiş olan paketleri bildirmenize gerek yoktur ve sürümlerin önceden yüklenmiş paketlerle uyumlu olması gerekir. Önceden yüklenmiş paketler ve sürümleri için bkz. Önceden yüklenmiş paketler.Dosyayı hazırladıktan sonra:
Realtime Compute konsolunda oturum açın.
Sol gezinme bölmesinde Artifacts seçeneğine tıklayın ve
requirements.txtdosyasını yükleyin.O&M > Deployments sayfasında hedef işin adına tıklayın.
Configuration sekmesinde Basic bölümünde Edit seçeneğine tıklayın.
Additional Dependencies alanında yüklediğiniz
requirements.txtdosyasını seçin.
Yüklenen ek bağımlılık dosyası
/flink/usrlibdizininde depolanır. Örneğin,requirements.txtdosyasının çalışma zamanı yolu/flink/usrlib/requirements.txtşeklindedir. -
Flink parametrelerini yapılandırın.
Realtime Compute konsolunda oturum açın.
Sol gezinme bölmesinde O&M > Deployments seçeneğine tıklayın.
Yapılandırmak istediğiniz Python işinin adına tıklayın.
Configuration sekmesinde Parameters bölümünü bulun ve bölümün sağ tarafındaki Edit seçeneğine tıklayın.
-
Other Configuration alanına aşağıdaki satırı ekleyin:
python.requirements: /flink/usrlib/requirements.txt -
(İsteğe bağlı) pip depo URL'sini belirtin. İşin ağ üzerinden bu URL'ye erişebildiğinden emin olun. Daha fazla bilgi için bkz. Ağ bağlantısı:
python.pip.index-url: <your pip index URL> Save seçeneğine tıklayın.
Manuel yükleme
Aşağıdaki iki senaryoda üçüncü taraf bir Python paketinin nasıl kullanılacağı gösterilmektedir:
-
Doğrudan içe aktarılabilen üçüncü taraf Python paketi kullanma
Üçüncü taraf Python paketiniz bir Zip Safe paketiyse aşağıdaki adımları uygulayarak paketi kurulum yapmadan doğrudan Python dağıtımlarında kullanabilirsiniz:
-
Doğrudan içe aktarılabilen bir üçüncü taraf Python paketi indirin.
Web tarayıcınızda PyPI adresini ziyaret edin.
Arama kutusuna apache-flink 1.20.3 gibi bir üçüncü taraf Python paketi adı girin.
Arama sonuçlarında kullanmak istediğiniz paketin adına tıklayın.
Açılan sayfanın sol gezinme bölmesinde Download files seçeneğine tıklayın.
Adında cp39-cp39-manylinux1 ifadesi geçen paketin adına tıklayarak paketi indirin.
Realtime Compute for Apache Flink konsolu üzerinde oturum açın.
Streaming Compute Flink sekmesinde çalışma alanınızı bulun ve Actions sütunundaki Console seçeneğine tıklayın.
Sol gezinme bölmesinde Artifacts seçeneğine tıklayın. Artifacts sayfasında Upload Artifact seçeneğine tıklayın. Açılan iletişim kutusunda gerekli üçüncü taraf Python paketini seçin.
Sol gezinme bölmesinde seçeneğine tıklayın. Deployments sayfasında seçeneğine tıklayın. İletişim kutusunda Python Libraries alanında yüklediğiniz üçüncü taraf Python paketini seçin.
Save seçeneğine tıklayın.
-
-
Derleme gerektiren üçüncü taraf Python paketi kullanma
Bir üçüncü taraf Python paketi aşağıdaki koşulları karşılıyorsa kullanılmadan önce derlenmelidir: Üçüncü taraf Python paketi tar.gz biçiminde sıkıştırılmış bir paket veya başka bir konumdan indirdiğiniz bir kaynak pakettir ve sıkıştırılmış paketin kök dizini altında setup.py dosyası bulunur. Üçüncü taraf Python paketini bir Python dağıtımında çağırmadan önce Flink ile uyumlu bir ortamda derlemeniz gerekir.
Üçüncü taraf Python paketlerini derlemek için quay.io/pypa/manylinux_2_28_x86_64 görüntüsündeki Python 3.9 sürümünü kullanmanızı öneririz. Görüntü tarafından oluşturulan paketler çoğu Linux işletim sistemiyle uyumludur. Görüntü hakkında daha fazla bilgi için bkz. manylinux.
Not/opt/python/cp39-cp39/bin/python3 dizininde Python 3.9 yüklüdür.
Aşağıdaki örnekte opencv-python-headless üçüncü taraf Python paketinin nasıl derleneceği ve kullanılacağı gösterilmektedir.
-
Bir üçüncü taraf Python paketi derleyin.
-
Yerel cihazınızda requirements.txt dosyasını hazırlayın. Aşağıdaki kod, dosyanın içeriğini göstermektedir:
opencv-python-headless numpy<2 -
Yerel cihazınızda build.sh betiğini hazırlayın. Aşağıdaki kod, betiğin içeriğini göstermektedir:
#!/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__ -
CLI'da aşağıdaki komutu çalıştırın:
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.shKomutu çalıştırdıktan sonra deps.zip adlı bir dosya oluşturulur. Bu dosya, derlenen üçüncü taraf Python paketidir.
Diğer gerekli üçüncü taraf Python paketlerini yüklemek için requirements.txt dosyasının içeriğini de değiştirebilirsiniz. Ayrıca requirements.txt dosyasında birden çok Python bağımlılığı belirtilebilir.
-
-
Python dağıtımlarında deps.zip üçüncü taraf Python paketini kullanın.
Realtime Compute for Apache Flink konsolu üzerinde oturum açın.
Çalışma alanınızı bulun ve Actions sütunundaki Console seçeneğine tıklayın.
Sol gezinme bölmesinde Artifacts seçeneğine tıklayın. Artifacts sayfasında Upload Artifact seçeneğine tıklayın. İletişim kutusunda deps.zip dosyasını seçin.
sayfasında dağıtımınıza tıklayın. Configuration sekmesinde Basic bölümünün sağ üst köşesindeki Edit seçeneğine tıklayın ve Python Libraries açılır listesinden deps.zip paketini seçin.
Save seçeneğine tıklayın.
-
JAR paketi kullanma
Python dağıtımınızda bir bağlayıcı veya Java UDF gibi Java sınıfları kullanıyorsanız bağlayıcının veya Java UDF'nin JAR paketini belirtmek için aşağıdaki işlemleri gerçekleştirebilirsiniz.
Realtime Compute for Apache Flink konsolu üzerinde oturum açın.
Fully Managed Flink sekmesinde yönetmek istediğiniz çalışma alanını bulun ve Actions sütunundaki Console seçeneğine tıklayın.
Sol gezinme bölmesinde Artifacts seçeneğine tıklayın. Artifacts sayfasında Upload Artifact seçeneğine tıklayın. İletişim kutusunda kullanmak istediğiniz JAR paketini seçin.
Deployments sayfasında istediğiniz dağıtımın adına tıklayın. Configuration sekmesinde Basic bölümünün sağ üst köşesindeki Edit seçeneğine tıklayın ve Additional Dependencies açılır listesinden gerekli JAR paketini seçin.
-
Configuration sekmesinde Parameters bölümünün sağ üst köşesindeki Edit seçeneğine tıklayın ve aşağıdaki yapılandırmayı Other Configuration alanına ekleyin.
Örneğin, taslak jar1.jar ve jar2.jar adlı iki JAR paketine bağımlıysa aşağıdaki yapılandırma bilgilerini ekleyin:
pipeline.classpaths: 'file:///flink/usrlib/jar1.jar;file:///flink/usrlib/jar2.jar' Save seçeneğine tıklayın.
Yerleşik bağlayıcıları, veri biçimlerini ve katalogları kullanma
Yerleşik bağlayıcılar, veri biçimleri ve kataloglar yalnızca VVR 11.2 ve sonraki sürümlerde desteklenir.
Bir Flink Python işinde yerleşik bağlayıcıları, veri biçimlerini ve katalogları kullanmak için bunları aşağıdaki şekilde belirtin.
-
Parameters bölümünde yapılandırmayı Other Configuration alanına ekleyin.
kafka ve sls adlı birden çok yerleşik bağlayıcıya bağımlı olmak için aşağıdaki yapılandırmayı ekleyin. Yerleşik bağlayıcıların adları için bkz. Desteklenen bağlayıcılar içindeki her bağlayıcının belgeleri.
pipeline.used-builtin-connectors: kafka;slsavro ve parquet adlı birden çok yerleşik veri biçimine bağımlı olmak için aşağıdaki yapılandırmayı ekleyin. Yerleşik veri biçimlerinin adları için desteklenen Veri biçimleri belgelerine bakın.
pipeline.used-builtin-formats: avro;parquethive-2.3.6 ve paimon adlı birden çok yerleşik kataloga bağımlı olmak için aşağıdaki yapılandırmayı ekleyin. Yerleşik katalogların adları için bkz. Kataloglar içindeki her kataloğun belgeleri.
pipeline.used-builtin-catalogs: hive-2.3.6;paimon Save seçeneğine tıklayın.
Veri dosyalarını kullanma
Tam yönetilen Flink, veri dosyaları yükleyerek Python dağıtımlarında hata ayıklamanıza izin vermez.
Aşağıdaki senaryolarda veri dosyalarının nasıl kullanılacağı gösterilmektedir:
-
Python Archives açılır listesinden bir paket seçme
Çok sayıda veri dosyanız varsa bu dosyaları bir ZIP dosyasında paketleyebilir ve Python dağıtımlarında kullanmak için aşağıdaki işlemleri gerçekleştirebilirsiniz:
Realtime Compute for Apache Flink konsolu üzerinde oturum açın.
Çalışma alanınızı bulun ve Actions sütunundaki Console seçeneğine tıklayın.
Sol gezinme bölmesinde Artifacts seçeneğine tıklayın. Artifact sayfasında Upload Artifact seçeneğine tıklayın. Açılan iletişim kutusunda istediğiniz veri dosyasının ZIP paketini seçin.
sayfasında dağıtımınızın adına tıklayın. Configuration sekmesinde Basic bölümünün sağ üst köşesindeki Edit seçeneğine tıklayın ve Python Archives açılır listesinden gerekli ZIP paketini seçin.
-
Python UDF'lerinde bir veri dosyasına erişmek için aşağıdaki komutu çalıştırın. Bu örnekte veri dosyalarını içeren paketin adı mydata.zip şeklindedir.
def map(): with open("mydata.zip/mydata/data.txt") as f: ...
-
Additional Dependencies açılır listesinden bir veri dosyası seçme
Az sayıda veri dosyanız varsa bu dosyalara Python dağıtımlarında erişmek için aşağıdaki işlemleri gerçekleştirebilirsiniz:
Realtime Compute for Apache Flink konsolu üzerinde oturum açın.
Çalışma alanınızı bulun ve Actions sütunundaki Console seçeneğine tıklayın.
Sol gezinme bölmesinde Artifacts seçeneğine tıklayın. Artifact sayfasında Upload Artifact seçeneğine tıklayın. Açılan iletişim kutusunda istediğiniz veri dosyasını seçin.
sayfasında istediğiniz dağıtımın adına tıklayın. Configuration sekmesinde Basic bölümünün sağ üst köşesindeki Edit seçeneğine tıklayın ve Additional Dependencies açılır listesinden gerekli veri dosyasını seçin.
-
Python UDF'lerinde bir veri dosyasına erişmek için aşağıdaki komutu çalıştırın. Bu örnekte veri dosyasının adı data.txt şeklindedir.
def map(): with open("/flink/usrlib/data.txt") as f: ...
Referanslar
Bir Python API taslağının nasıl geliştirileceği hakkında daha fazla bilgi için bkz. PyFlink işleri geliştirme.
Realtime Compute for Apache Flink için bir Python dağıtımının nasıl geliştirileceği hakkında daha fazla bilgi için bkz. PyFlink işi.
Tam yönetilen Flink, SQL taslaklarını ve DataStream taslaklarını destekler. SQL taslaklarının ve DataStream taslaklarının nasıl geliştirileceği hakkında daha fazla bilgi için bkz. İş geliştirme genel bakışı ve JAR işi geliştirme.