En los despliegues de Python de Realtime Compute for Apache Flink, usted puede usar entornos virtuales de Python personalizados, paquetes de Python de terceros, paquetes JAR y archivos de datos. Este tema describe cómo utilizar estas dependencias en dichos despliegues.
Descripción general
Siga las instrucciones de las secciones a continuación para usar las dependencias de Python:
Entorno de Python preinstalado
El entorno completamente administrado de Flink incluye un entorno de Python preinstalado. Las versiones de Python son las siguientes:
VVR 8.0.10 y anteriores: Python 3.7
De VVR 8.0.11 hasta una versión anterior a VVR 11.7: Python 3.9
VVR 11.7 y posteriores: Python 3.9, Python 3.10 y Python 3.11
Para consultar los paquetes de terceros preinstalados en el entorno de Python, consulte Develop a Python draft.
Algunos paquetes de Python de terceros requieren versiones específicas de glibc. Las versiones de glibc preinstaladas en el entorno completamente administrado de Flink son las siguientes:
X86
VVR 8.x y anteriores: glibc 2.17
VVR 11.x y posteriores: glibc 2.31
ARM
VVR 11.2 y anteriores: glibc 2.17
VVR 11.3 y posteriores: glibc 2.31
Glibc es compatible con versiones anteriores. La versión de glibc que requieran sus paquetes de Python de terceros no debe ser posterior a la versión de glibc del entorno.
Uso de un entorno virtual de Python personalizado
En Ververica Runtime (VVR) 4.X, solo se admiten entornos virtuales de Python 3.7. En VVR 6.X o posterior, usted puede usar entornos virtuales de versiones más recientes de Python.
Si el entorno de Python preinstalado no cumple con sus requisitos, utilice una versión personalizada de Python mediante entornos virtuales. Cada entorno virtual de Python proporciona un entorno de ejecución completo. Dentro de un entorno virtual, usted puede instalar varios paquetes de dependencia de Python. A continuación se describe cómo preparar un entorno virtual de Python.
-
Prepare un entorno virtual de Python.
-
Prepare el script setup-pyflink-virtual-env.sh en su computadora local. El siguiente código muestra el contenido del 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 venvNotaEn este tema, el despliegue utiliza VVR 11.7 y se ejecuta en un entorno virtual de Python 3.10. Si desea usar otra versión de VVR o instalar un entorno virtual con una versión distinta de Python, modifique los siguientes parámetros:
mamba create: cambie este valor por la versión de Python que necesite.
-
pip install:
VVR 11.6 y posteriores: instale ververica-flink y ajuste la versión para que coincida con la versión de VVR de su despliegue.
VVR 11.5 y anteriores: instale apache-flink y ajuste la versión a la de Flink correspondiente a la versión de VVR de su despliegue. Para obtener más información sobre cómo consultar la versión de Flink, consulte Storage management.
-
Prepare el script build.sh en su computadora local. El siguiente código muestra el contenido del script.
#!/bin/bash set -e -x yum install -y zip wget cd /root/ bash /build/setup-pyflink-virtual-env.sh mv venv.zip /build/ -
En la CLI, ejecute el siguiente comando para instalar el entorno virtual de 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.shDespués de ejecutar el comando, se genera un archivo llamado venv.zip. En este ejemplo se utiliza el entorno virtual de Python 3.10.
También puede modificar el script anterior para instalar el paquete de Python de terceros que necesite dentro del entorno virtual.
-
-
Utilice el entorno virtual de Python en los despliegues de Python.
Inicie sesión en la consola de Realtime Compute for Apache Flink.
En la pestaña Fully Managed Flink, busque el espacio de trabajo que desea gestionar y haga clic en Console en la columna Actions.
En el panel de navegación izquierdo, haga clic en Artifacts. En la página Artifacts, haga clic en Upload Artifact. En el cuadro de diálogo que aparece, seleccione el paquete venv.zip.
En la página , haga clic en el nombre del trabajo deseado.
-
En la pestaña Configuration, haga clic en Edit en la esquina superior derecha de la sección Basic y seleccione el paquete
venv.zipen la lista desplegable Python Archives.Si el despliegue es de tipo SQL y necesita usar funciones definidas por el usuario (UDF) de Python, haga clic en Edit en la esquina superior derecha de la sección Parameters y agregue la siguiente configuración al campo Other Configuration:
python.archives: oss://.../venv.zip -
En la sección Parameters, agregue la información de configuración de la ruta donde se instalará el entorno virtual de Python especificado al campo Other Configuration. Esta ruta depende de la versión de VVR de su despliegue.
-
VVR 6.X o posterior
python.executable: venv.zip/venv/bin/python python.client.executable: venv.zip/venv/bin/python -
Una versión del motor anterior a VVR 6.X
python.executable: venv.zip/venv/bin/python
-
Uso de un paquete de Python de terceros
Instalación de dependencias mediante requirements.txt
A partir de VVR 11.9.preview.1, los trabajos de Python pueden declarar paquetes de Python de terceros en requirements.txt. Cuando el trabajo inicia, el sistema ejecuta pip para instalar las dependencias declaradas en el archivo y agrega los paquetes instalados a la variable PYTHONPATH del worker de Python. Siga estos pasos:
-
Prepare el archivo
requirements.txt.Cree el archivo
requirements.txten su computadora y declare las dependencias de terceros con el formato de requisitos de pip.package-a==1.2.3 package-b==4.5.6Declare en
requirements.txtúnicamente los paquetes de terceros que utilice el trabajo. No es necesario declarar los paquetes preinstalados en VVR, y las versiones deben ser compatibles con dichos paquetes. Para consultar los paquetes y las versiones preinstaladas, consulte Pre-installed packages.Una vez preparado el archivo:
Inicie sesión en la consola de Realtime Compute.
En el panel de navegación izquierdo, haga clic en Artifacts y cargue el archivo
requirements.txt.En la página O&M > Deployments, haga clic en el nombre del trabajo de destino.
En la pestaña Configuration, dentro de la sección Basic, haga clic en Edit.
En Additional Dependencies, seleccione el archivo
requirements.txtque cargó.
El archivo de dependencia adicional que cargó se almacena en el directorio
/flink/usrlib. Por ejemplo, la ruta de ejecución derequirements.txtes/flink/usrlib/requirements.txt. -
Configure los parámetros de Flink.
Inicie sesión en la consola de Realtime Compute.
En el panel de navegación izquierdo, elija O&M > Deployments.
Haga clic en el nombre del trabajo de Python que desea configurar.
En la pestaña Configuration, busque la sección Parameters y haga clic en Edit en el lado derecho de la sección.
-
En el campo Other Configuration, agregue la siguiente línea:
python.requirements: /flink/usrlib/requirements.txt -
(Opcional) Especifique la URL del repositorio de pip. Asegúrese de que el trabajo pueda acceder a esta URL a través de la red. Para obtener más información, consulte Network connectivity:
python.pip.index-url: <your pip index URL> Haga clic en Save.
Carga manual
A continuación se muestran dos escenarios sobre cómo usar un paquete de Python de terceros:
-
Uso de un paquete de Python de terceros que se puede importar directamente
Si su paquete de Python de terceros es un paquete Zip Safe, siga estos pasos para usarlo directamente en los despliegues de Python sin necesidad de instalarlo:
-
Descargue un paquete de Python de terceros que se pueda importar directamente.
Visite PyPI en su navegador web.
Introduzca el nombre de un paquete de Python de terceros, como apache-flink 1.20.3, en el cuadro de búsqueda.
En los resultados de búsqueda, haga clic en el nombre del paquete que desea usar.
En el panel de navegación izquierdo de la página que aparece, haga clic en Download files.
Haga clic en el nombre del paquete que contenga cp39-cp39-manylinux1 para descargarlo.
Inicie sesión en la consola de Realtime Compute for Apache Flink.
En la pestaña Streaming Compute Flink, busque su espacio de trabajo y haga clic en Console en la columna Actions.
En el panel de navegación izquierdo, haga clic en Artifacts. En la página Artifacts, haga clic en Upload Artifact. En el cuadro de diálogo que aparece, seleccione el paquete de Python de terceros que necesite.
En el panel de navegación izquierdo, haga clic en . En la página Deployments, haga clic en . En el cuadro de diálogo, para Python Libraries, seleccione el paquete de Python de terceros que cargó.
Haga clic en Save.
-
-
Uso de un paquete de Python de terceros que requiere compilación
Un paquete de Python de terceros debe compilarse antes de usarse si cumple con las siguientes condiciones: es un paquete comprimido en formato tar.gz o un paquete de origen descargado de otra ubicación, y el archivo setup.py existe en el directorio raíz del paquete comprimido. Antes de llamar al paquete de Python de terceros en un despliegue de Python, compílelo en un entorno compatible con Flink.
Se recomienda usar Python 3.9 en la imagen quay.io/pypa/manylinux_2_28_x86_64 para compilar paquetes de Python de terceros. Los paquetes generados con esta imagen son compatibles con la mayoría de los sistemas operativos Linux. Para obtener más información sobre la imagen, consulte manylinux.
NotaPython 3.9 está instalado en el directorio /opt/python/cp39-cp39/bin/python3.
El siguiente ejemplo muestra cómo compilar y usar el paquete de Python de terceros opencv-python-headless.
-
Compile un paquete de Python de terceros.
-
Prepare el archivo requirements.txt en su computadora local. El siguiente código muestra el contenido del archivo:
opencv-python-headless numpy<2 -
Prepare el script build.sh en su computadora local. El siguiente código muestra el contenido del 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__ -
En la CLI, ejecute el siguiente comando:
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.shDespués de ejecutar el comando, se genera un archivo llamado deps.zip. Este archivo es el paquete de Python de terceros ya compilado.
También puede modificar el contenido del archivo requirements.txt para instalar otros paquetes de Python de terceros que necesite. Además, es posible especificar varias dependencias de Python en el archivo requirements.txt.
-
-
Utilice el paquete de Python de terceros deps.zip en los despliegues de Python.
Inicie sesión en la consola de Realtime Compute for Apache Flink.
Busque su espacio de trabajo y haga clic en Console en la columna Actions.
En el panel de navegación izquierdo, haga clic en Artifacts. En la página Artifacts, haga clic en Upload Artifact. En el cuadro de diálogo, seleccione deps.zip.
En la página , haga clic en su despliegue. En la pestaña Configuration, haga clic en Edit en la esquina superior derecha de la sección Basic y seleccione el paquete deps.zip en la lista desplegable Python Libraries.
Haga clic en Save.
-
Uso de un paquete JAR
Si su despliegue de Python utiliza clases de Java, como un conector o una UDF de Java, siga estos pasos para especificar el paquete JAR del conector o de la UDF de Java.
Inicie sesión en la consola de Realtime Compute for Apache Flink.
En la pestaña Fully Managed Flink, busque el espacio de trabajo que desea gestionar y haga clic en Console en la columna Actions.
En el panel de navegación izquierdo, haga clic en Artifacts. En la página Artifacts, haga clic en Upload Artifact. En el cuadro de diálogo, seleccione el paquete JAR que desea usar.
En la página Deployments, haga clic en el nombre del despliegue deseado. En la pestaña Configuration, haga clic en Edit en la esquina superior derecha de la sección Basic y seleccione el paquete JAR necesario en la lista desplegable Additional Dependencies.
-
En la pestaña Configuration, haga clic en Edit en la esquina superior derecha de la sección Parameters y agregue la siguiente configuración al campo Other Configuration.
Por ejemplo, si el borrador depende de dos paquetes JAR llamados jar1.jar y jar2.jar, agregue la siguiente información de configuración:
pipeline.classpaths: 'file:///flink/usrlib/jar1.jar;file:///flink/usrlib/jar2.jar' Haga clic en Save.
Uso de conectores, formatos de datos y catálogos integrados
Los conectores, formatos de datos y catálogos integrados solo son compatibles a partir de VVR 11.2.
Para usar conectores, formatos de datos y catálogos integrados en un trabajo de Python de Flink, especifíquelos de la siguiente manera.
-
En la sección Parameters, agregue la configuración al campo Other Configuration.
Para depender de varios conectores integrados llamados kafka y sls, agregue la siguiente configuración. Para consultar los nombres de los conectores integrados, revise la documentación de cada conector en Supported connectors.
pipeline.used-builtin-connectors: kafka;slsPara depender de varios formatos de datos integrados llamados avro y parquet, agregue la siguiente configuración. Para consultar los nombres de los formatos de datos integrados, revise la documentación de los Data formats compatibles.
pipeline.used-builtin-formats: avro;parquetPara depender de varios catálogos integrados llamados hive-2.3.6 y paimon, agregue la siguiente configuración. Para consultar los nombres de los catálogos integrados, revise la documentación de cada catálogo en Catalogs.
pipeline.used-builtin-catalogs: hive-2.3.6;paimon Haga clic en Save.
Uso de archivos de datos
Fully managed Flink no permite depurar despliegues de Python mediante la carga de archivos de datos.
A continuación se muestran los escenarios sobre cómo usar archivos de datos:
-
Selección de un paquete desde la lista desplegable Python Archives
Si tiene una gran cantidad de archivos de datos, empaquételos en un archivo ZIP y siga estos pasos para usarlos en los despliegues de Python:
Inicie sesión en la consola de Realtime Compute for Apache Flink.
Busque su espacio de trabajo y haga clic en Console en la columna Actions.
En el panel de navegación izquierdo, haga clic en Artifacts. En la página Artifact, haga clic en Upload Artifact. En el cuadro de diálogo que aparece, seleccione el paquete ZIP del archivo de datos deseado.
En la página , haga clic en el nombre de su despliegue. En la pestaña Configuration, haga clic en Edit en la esquina superior derecha de la sección Basic y seleccione el paquete ZIP necesario en la lista desplegable Python Archives.
-
En las UDF de Python, ejecute el siguiente comando para acceder a un archivo de datos. En este ejemplo, el nombre del paquete que contiene los archivos de datos es mydata.zip.
def map(): with open("mydata.zip/mydata/data.txt") as f: ...
-
Selección de un archivo de datos desde la lista desplegable Additional Dependencies
Si tiene pocos archivos de datos, siga estos pasos para acceder a ellos en los despliegues de Python:
Inicie sesión en la consola de Realtime Compute for Apache Flink.
Busque su espacio de trabajo y haga clic en Console en la columna Actions.
En el panel de navegación izquierdo, haga clic en Artifacts. En la página Artifact, haga clic en Upload Artifact. En el cuadro de diálogo que aparece, seleccione el archivo de datos deseado.
En la página , haga clic en el nombre del despliegue deseado. En la pestaña Configuration, haga clic en Edit en la esquina superior derecha de la sección Basic y seleccione el archivo de datos necesario en la lista desplegable Additional Dependencies.
-
En las UDF de Python, ejecute el siguiente comando para acceder a un archivo de datos. En este ejemplo, el archivo de datos se llama data.txt.
def map(): with open("/flink/usrlib/data.txt") as f: ...
Referencias
Para obtener más información sobre cómo desarrollar un borrador de API de Python, consulte Develop PyFlink jobs.
Para obtener más información sobre cómo desarrollar un despliegue de Python de Realtime Compute for Apache Flink, consulte PyFlink job.
Fully managed Flink es compatible con borradores SQL y borradores DataStream. Para obtener más información sobre cómo desarrollarlos, consulte Job development overview y Develop a JAR job.