Vous pouvez utiliser des environnements virtuels Python personnalisés, des packages Python tiers, des packages JAR et des fichiers de données dans les déploiements Python de Realtime Compute for Apache Flink. Cette rubrique explique comment utiliser ces dépendances dans les déploiements Python.
Présentation
Suivez les instructions des sections suivantes pour utiliser les dépendances Python :
Environnement Python préinstallé
L'environnement Fully Managed Flink inclut un environnement Python préinstallé. Les versions de Python sont les suivantes :
VVR 8.0.10 et versions antérieures : Python 3.7
VVR 8.0.11 et versions ultérieures : Python 3.9
Pour connaître la liste des packages tiers préinstallés dans l'environnement Python, consultez la section Développer un projet Python.
Certains packages Python tiers ont des exigences concernant la version de glibc. Les versions de glibc préinstallées dans l'environnement Fully Managed Flink sont les suivantes :
X86
VVR 8.x et versions antérieures : glibc 2,17
VVR 11.x et versions ultérieures : glibc 2,31
ARM
VVR 11.2 et versions antérieures : glibc 2,17
VVR 11.3 et versions ultérieures : glibc 2,31
Glibc prend en charge la compatibilité ascendante. La version de glibc requise par les packages Python tiers que vous utilisez ne doit pas être supérieure à la version de glibc présente dans l'environnement.
Utiliser un environnement virtuel Python personnalisé
Dans Ververica Runtime (VVR) 4.X, vous pouvez uniquement utiliser des environnements virtuels Python 3.7. Dans VVR 6.X ou versions ultérieures, vous pouvez utiliser des environnements virtuels avec des versions de Python plus récentes.
Si l'environnement Python préinstallé ne répond pas à vos besoins, vous pouvez utiliser une version personnalisée de Python via des environnements virtuels. Chaque environnement virtuel Python fournit un environnement d'exécution Python complet. Vous pouvez installer une série de packages de dépendances Python dans un environnement virtuel. Pour plus d'informations sur les environnements virtuels Python, consultez la documentation Python relative à la La section suivante décrit comment préparer un environnement virtuel Python.
-
Préparez un environnement virtuel Python.
-
Préparez le script setup-pyflink-virtual-env.sh sur votre appareil local. Le code suivant affiche le contenu du script.
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 venvRemarqueDans cette rubrique, le déploiement utilise VVR 11.7 et s'exécute dans un environnement virtuel Python 3.10. Si vous souhaitez utiliser une autre version de VVR ou installer un environnement virtuel avec une autre version de Python, vous devez modifier les paramètres suivants :
mamba create : modifiez cette valeur pour sélectionner la version de Python souhaitée.
-
pip install :
VVR 11.6 et versions ultérieures : installez ververica-flink et adaptez la version à celle de VVR utilisée dans votre déploiement.
VVR 11.5 et versions antérieures : installez apache-flink et adaptez la version à celle de Flink correspondant à la version de VVR de votre déploiement. Pour savoir comment afficher la version de Flink, consultez la section Gestion du stockage.
-
Préparez le script build.sh sur votre appareil local. Le code suivant affiche le contenu du script.
#!/bin/bash set -e -x yum install -y zip wget cd /root/ bash /build/setup-pyflink-virtual-env.sh mv venv.zip /build/ -
Exécutez la commande suivante dans l'interface CLI pour installer l'environnement virtuel 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.shUne fois la commande exécutée, un fichier nommé venv.zip est généré. Dans cet exemple, l'environnement virtuel utilisé est Python 3.10.
Vous pouvez également modifier le script précédent pour installer le package Python tiers requis dans l'environnement virtuel.
-
-
Utilisez l'environnement virtuel Python dans les déploiements Python.
Connectez-vous à la console Realtime Compute for Apache Flink.
Sous l'onglet Fully Managed Flink, repérez l'espace de travail à gérer et cliquez sur Console dans la colonne Actions.
Dans le volet de navigation de gauche, cliquez sur Artifacts. Sur la page Artifacts, cliquez sur Upload Artifact. Dans la boîte de dialogue qui s'affiche, sélectionnez le package venv.zip.
Sur la page , cliquez sur le nom du job souhaité.
-
Sous l'onglet Configuration, cliquez sur Edit dans le coin supérieur droit de la section Basic et sélectionnez le package
venv.zipdans la liste déroulante Python Archives.Si le déploiement est un déploiement SQL qui doit utiliser des fonctions définies par l'utilisateur (UDF) Python, cliquez sur Edit dans le coin supérieur droit de la section Parameters et ajoutez la configuration suivante au champ Other Configuration :
python.archives: oss://.../venv.zip -
Dans la section Parameters, ajoutez les informations de configuration relatives au chemin d'installation de l'environnement virtuel Python spécifié, en fonction de la version de VVR de votre déploiement, au champ Other Configuration.
-
VVR 6.X ou versions ultérieures
python.executable: venv.zip/venv/bin/python python.client.executable: venv.zip/venv/bin/python -
Version du moteur antérieure à VVR 6.X
python.executable: venv.zip/venv/bin/python
-
Utiliser un package Python tiers
Les deux scénarios suivants illustrent l'utilisation d'un package Python tiers :
-
Utiliser un package Python tiers pouvant être importé directement
Si votre package Python tiers est un package Zip Safe, vous pouvez suivre les étapes ci-dessous pour l'utiliser directement dans les déploiements Python sans installation préalable :
-
Téléchargez un package Python tiers pouvant être importé directement.
Accédez à PyPI depuis votre navigateur web.
Saisissez le nom d'un package Python tiers, par exemple apache-flink 1.20.3, dans la zone de recherche.
Dans les résultats de recherche, cliquez sur le nom du package souhaité.
Dans le volet de navigation de gauche de la page qui s'affiche, cliquez sur Download files.
Cliquez sur le nom du package contenant cp39-cp39-manylinux1 pour le télécharger.
Connectez-vous à la console Realtime Compute for Apache Flink.
Sous l'onglet Streaming Compute Flink, repérez votre espace de travail et cliquez sur Console dans la colonne Actions.
Dans le volet de navigation de gauche, cliquez sur Artifacts. Sur la page Artifacts, cliquez sur Upload Artifact. Dans la boîte de dialogue qui s'affiche, sélectionnez le package Python tiers requis.
Dans le volet de navigation de gauche, cliquez sur . Sur la page Deployments, cliquez sur . Dans la boîte de dialogue, pour Python Libraries, sélectionnez le package Python tiers que vous avez téléchargé.
Cliquez sur Save.
-
-
Utiliser un package Python tiers nécessitant une compilation
Un package Python tiers doit être compilé avant utilisation si les conditions suivantes sont réunies : il s'agit d'un package compressé au format tar.gz ou d'un package source téléchargé depuis un autre emplacement, et le fichier setup.py existe dans le répertoire racine du package compressé. Vous devez compiler le package Python tiers dans un environnement compatible avec Flink avant de l'appeler dans un déploiement Python.
Nous vous recommandons d'utiliser Python 3.9 dans l'image quay.io/pypa/manylinux_2_28_x86_64 pour compiler les packages Python tiers. Les packages générés par cette image sont compatibles avec la plupart des systèmes d'exploitation Linux. Pour plus d'informations sur cette image, consultez manylinux.
RemarquePython 3.9 est installé dans le répertoire /opt/python/cp39-cp39/bin/python3.
L'exemple suivant montre comment compiler et utiliser le package Python tiers opencv-python-headless.
-
Compilez un package Python tiers.
-
Préparez le fichier requirements.txt sur votre appareil local. Le code suivant affiche le contenu du fichier :
opencv-python-headless numpy<2 -
Préparez le script build.sh sur votre appareil local. Le code suivant affiche le contenu du script :
#!/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__ -
Exécutez la commande suivante dans l'interface CLI :
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.shUne fois la commande exécutée, un fichier nommé deps.zip est généré. Ce fichier correspond au package Python tiers compilé.
Vous pouvez également modifier le contenu du fichier requirements.txt pour installer d'autres packages Python tiers requis. Par ailleurs, plusieurs dépendances Python peuvent être spécifiées dans le fichier requirements.txt.
-
-
Utilisez le package Python tiers deps.zip dans les déploiements Python.
Connectez-vous à la console Realtime Compute for Apache Flink.
Repérez votre espace de travail et cliquez sur Console dans la colonne Actions.
Dans le volet de navigation de gauche, cliquez sur Artifacts. Sur la page Artifacts, cliquez sur Upload Artifact. Dans la boîte de dialogue, sélectionnez deps.zip.
Sur la page , cliquez sur votre déploiement. Sous l'onglet Configuration, cliquez sur Edit dans le coin supérieur droit de la section Basic et sélectionnez le package deps.zip dans la liste déroulante Python Libraries.
Cliquez sur Save.
-
Utiliser un package JAR
Si vous utilisez des classes Java, telles qu'un connecteur ou une UDF Java, dans votre déploiement Python, suivez les étapes ci-dessous pour spécifier le package JAR du connecteur ou de l'UDF Java.
Connectez-vous à la console Realtime Compute for Apache Flink.
Sous l'onglet Fully Managed Flink, repérez l'espace de travail à gérer et cliquez sur Console dans la colonne Actions.
Dans le volet de navigation de gauche, cliquez sur Artifacts. Sur la page Artifacts, cliquez sur Upload Artifact. Dans la boîte de dialogue, sélectionnez le package JAR à utiliser.
Sur la page Deployments, cliquez sur le nom du déploiement souhaité. Sous l'onglet Configuration, cliquez sur Edit dans le coin supérieur droit de la section Basic et sélectionnez le package JAR requis dans la liste déroulante Additional Dependencies.
-
Sous l'onglet Configuration, cliquez sur Edit dans le coin supérieur droit de la section Parameters et ajoutez la configuration suivante au champ Other Configuration.
Par exemple, si le projet dépend des deux packages JAR nommés jar1.jar et jar2.jar, ajoutez les informations de configuration suivantes :
pipeline.classpaths: 'file:///flink/usrlib/jar1.jar;file:///flink/usrlib/jar2.jar' Cliquez sur Save.
Utiliser des connecteurs, formats de données et catalogs intégrés
Seules les versions VVR 11.2 et ultérieures sont prises en charge.
Pour utiliser des connecteurs, formats de données et catalogs intégrés dans les programmes Python, procédez comme suit :
-
Sur la page de détails de votre déploiement Python, dans la section Parameters, ajoutez les configurations au champ Other Configuration.
Ajoutez le paramètre pour utiliser les connecteurs intégrés. La configuration suivante spécifie les connecteurs Kafka et SLS. Pour connaître les noms spécifiques des connecteurs, consultez la documentation sous Connecteurs pris en charge.
pipeline.used-builtin-connectors: kafka;slsAjoutez le paramètre pour les formats de données intégrés. La configuration suivante spécifie les formats avro et parquet. Pour connaître les noms spécifiques des formats de données, consultez la section Formats de données.
pipeline.used-builtin-formats: avro;parquetAjoutez le paramètre pour les catalogs intégrés. La configuration suivante spécifie les catalogs hive-2.3.6 et paimon. Pour connaître les catalogs spécifiques, consultez la section Catalogs.
pipeline.used-builtin-catalogs: hive-2.3.6;paimon Cliquez sur Save.
Utiliser des fichiers de données
Fully Managed Flink ne permet pas de déboguer les déploiements Python en téléchargeant des fichiers de données.
Les scénarios suivants illustrent l'utilisation des fichiers de données :
-
Sélectionner un package dans la liste déroulante Python Archives
Si vous disposez d'un grand nombre de fichiers de données, vous pouvez les regrouper dans un fichier ZIP et suivre les opérations ci-dessous pour les utiliser dans les déploiements Python :
Connectez-vous à la console Realtime Compute for Apache Flink.
Repérez votre espace de travail et cliquez sur Console dans la colonne Actions.
Dans le volet de navigation de gauche, cliquez sur Artifacts. Sur la page Artifact, cliquez sur Upload Artifact. Dans la boîte de dialogue qui s'affiche, sélectionnez le package ZIP du fichier de données souhaité.
Sur la page , cliquez sur le nom de votre déploiement. Sous l'onglet Configuration, cliquez sur Edit dans le coin supérieur droit de la section Basic et sélectionnez le package ZIP requis dans la liste déroulante Python Archives.
-
Dans les UDF Python, exécutez la commande suivante pour accéder à un fichier de données. Dans cet exemple, le nom du package contenant les fichiers de données est mydata.zip.
def map(): with open("mydata.zip/mydata/data.txt") as f: ...
-
Sélectionner un fichier de données dans la liste déroulante Additional Dependencies
Si vous disposez d'un petit nombre de fichiers de données, suivez les opérations ci-dessous pour y accéder dans les déploiements Python :
Connectez-vous à la console Realtime Compute for Apache Flink.
Repérez votre espace de travail et cliquez sur Console dans la colonne Actions.
Dans le volet de navigation de gauche, cliquez sur Artifacts. Sur la page Artifact, cliquez sur Upload Artifact. Dans la boîte de dialogue qui s'affiche, sélectionnez le fichier de données souhaité.
Sur la page , cliquez sur le nom du déploiement souhaité. Sous l'onglet Configuration, cliquez sur Edit dans le coin supérieur droit de la section Basic et sélectionnez le fichier de données requis dans la liste déroulante Additional Dependencies.
-
Dans les UDF Python, exécutez la commande suivante pour accéder à un fichier de données. Dans cet exemple, le fichier de données est nommé data.txt.
def map(): with open("/flink/usrlib/data.txt") as f: ...
Références
Pour plus d'informations sur le développement d'un projet utilisant l'API Python, consultez la section Développer des jobs PyFlink.
Pour plus d'informations sur le développement d'un déploiement Python de Realtime Compute for Apache Flink, consultez la section Job PyFlink.
Fully Managed Flink prend en charge les projets SQL et les projets DataStream. Pour plus d'informations sur le développement de projets SQL et DataStream, consultez les sections Présentation du développement de jobs et Développer un job JAR.