Use ambientes virtuais personalizados do Python, pacotes Python de terceiros, pacotes JAR e arquivos de dados em implantações Python do Realtime Compute for Apache Flink. Este tópico descreve como usar essas dependências em implantações Python.
Visão geral
Use as dependências do Python de acordo com as instruções das seções a seguir:
Ambiente Python pré-instalado
O ambiente do Flink totalmente gerenciado já inclui um ambiente Python pré-instalado. As versões do Python são as seguintes:
VVR 8.0.10 e anteriores: Python 3,7
VVR 8.0.11 ou posterior, mas anterior ao VVR 11.7: Python 3.9
VVR 11.7 ou posterior: Python 3.9, Python 3.10 e Python 3.11
Para consultar os pacotes de terceiros pré-instalados no ambiente Python, consulte Develop a Python draft.
Alguns pacotes Python de terceiros exigem versões específicas do glibc. As versões do glibc pré-instaladas no ambiente do Flink totalmente gerenciado são as seguintes:
X86
VVR 8.x e anteriores: glibc 2,17
VVR 11.x e posteriores: glibc 2,31
ARM
VVR 11.2 e anteriores: glibc 2,17
VVR 11.3 e posteriores: glibc 2,31
O glibc oferece compatibilidade com versões futuras. A versão do glibc exigida pelos pacotes Python de terceiros em uso não pode ser superior à versão do glibc presente no ambiente.
Use um ambiente virtual personalizado do Python
No Ververica Runtime (VVR) 4.X, use apenas ambientes virtuais do Python 3,7. No VVR 6.X ou posterior, é possível usar ambientes virtuais de versões mais recentes do Python.
Se o ambiente Python pré-instalado não atender às suas necessidades, use uma versão personalizada do Python por meio de ambientes virtuais. Cada ambiente virtual do Python fornece um ambiente de execução completo, onde é possível instalar diversos pacotes de dependência. A seção a seguir descreve como preparar um ambiente virtual do Python.
-
Prepare um ambiente virtual do Python.
-
Prepare o script setup-pyflink-virtual-env.sh no seu dispositivo local. O código a seguir apresenta o conteúdo do 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 venvNotaNeste tópico, a implantação usa o VVR 11.7 e é executada em um ambiente virtual do Python 3.10. Para usar uma versão diferente do VVR ou instalar um ambiente virtual de outra versão do Python, modifique os seguintes parâmetros:
mamba create: altere para a versão desejada do Python.
-
pip install:
VVR 11.6 e posteriores: instale o ververica-flink e defina a versão correspondente ao VVR da sua implantação.
VVR 11.5 e anteriores: instale o apache-flink e defina a versão correspondente ao Flink do VVR da sua implantação. Para obter mais informações sobre como visualizar a versão do Flink, consulte Storage management.
-
Prepare o script build.sh no seu dispositivo local. O código a seguir apresenta o conteúdo do script.
#!/bin/bash set -e -x yum install -y zip wget cd /root/ bash /build/setup-pyflink-virtual-env.sh mv venv.zip /build/ -
Na CLI, execute o seguinte comando para instalar o ambiente virtual do 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.shApós a execução do comando, o sistema gera o arquivo venv.zip. Neste exemplo, utiliza-se o ambiente virtual do Python 3.10.
Também é possível modificar o script anterior para instalar o pacote Python de terceiros necessário no ambiente virtual.
-
-
Use o ambiente virtual do Python em implantações Python.
Na guia Fully Managed Flink, localize o workspace a ser gerenciado e clique em Console na coluna Actions.
No painel de navegação à esquerda, clique em Artifacts. Na página Artifacts, clique em Upload Artifact e selecione o pacote venv.zip na caixa de diálogo exibida.
Na página , clique no nome do job desejado.
-
Na guia Configuration, clique em Edit no canto superior direito da seção Basic e selecione o pacote
venv.zipna lista suspensa Python Archives.Se a implantação for do tipo SQL e exigir o uso de funções definidas pelo usuário (UDFs) em Python, clique em Edit no canto superior direito da seção Parameters e adicione a seguinte configuração ao campo Other Configuration:
python.archives: oss://.../venv.zip -
Na seção Parameters, adicione as informações de configuração do caminho de instalação do ambiente virtual do Python especificado ao campo Other Configuration, com base na versão do VVR da sua implantação.
-
VVR 6.X ou posterior
python.executable: venv.zip/venv/bin/python python.client.executable: venv.zip/venv/bin/python -
Versão do motor anterior ao VVR 6.X
python.executable: venv.zip/venv/bin/python
-
Use um pacote Python de terceiros
Instale dependências usando o requirements.txt
A partir do VVR 11.9.preview.1, os jobs em Python podem declarar pacotes Python de terceiros no arquivo requirements.txt. Quando o job é iniciado, o sistema executa o pip para instalar as dependências declaradas no arquivo e adiciona os pacotes instalados ao PYTHONPATH do worker Python. Execute as seguintes etapas:
-
Prepare o arquivo
requirements.txt.Crie o arquivo
requirements.txtno seu computador e declare as dependências de terceiros no formato de requisitos do pip.package-a==1.2.3 package-b==4.5.6Declare no
requirements.txtapenas os pacotes de terceiros usados pelo job. Não é necessário declarar os pacotes pré-instalados no VVR, e as versões devem ser compatíveis com os pacotes pré-instalados. Para consultar os pacotes e versões pré-instalados, consulte Pre-installed packages.Após preparar o arquivo, siga estas etapas:
Acesse o console do Realtime Compute.
No painel de navegação à esquerda, clique em Artifacts e faça o upload do
requirements.txt.Na página O&M > Deployments, clique no nome do job de destino.
Na guia Configuration, na seção Basic, clique em Edit.
Em Additional Dependencies, selecione o
requirements.txtenviado.
O sistema armazena o arquivo de dependência adicional enviado no diretório
/flink/usrlib. Por exemplo, o caminho de execução dorequirements.txté/flink/usrlib/requirements.txt. -
Configure os parâmetros do Flink.
Acesse o console do Realtime Compute.
No painel de navegação à esquerda, escolha O&M > Deployments.
Clique no nome do job Python a ser configurado.
Na guia Configuration, localize a seção Parameters e clique em Edit no lado direito da seção.
-
No campo Other Configuration, adicione a seguinte linha:
python.requirements: /flink/usrlib/requirements.txt -
(Opcional) Especifique a URL do repositório pip. Certifique-se de que o job possa acessar a URL pela rede. Para obter mais informações, consulte Network connectivity:
python.pip.index-url: <your pip index URL> Clique em Save.
Upload manual
Os dois cenários a seguir demonstram como usar um pacote Python de terceiros:
-
Use um pacote Python de terceiros que possa ser importado diretamente
Se o seu pacote Python de terceiros for um pacote Zip Safe, execute as etapas a seguir para usá-lo diretamente em implantações Python sem precisar instalá-lo:
-
Baixe um pacote Python de terceiros que possa ser importado diretamente.
Acesse o PyPI no seu navegador.
Insira o nome de um pacote Python de terceiros, como apache-flink 1.20.3, na caixa de pesquisa.
Nos resultados da pesquisa, clique no nome do pacote desejado.
No painel de navegação à esquerda da página exibida, clique em Download files.
Clique no nome do pacote que contenha cp39-cp39-manylinux1 para baixá-lo.
Na guia Streaming Compute Flink, localize o seu workspace e clique em Console na coluna Actions.
No painel de navegação à esquerda, clique em Artifacts. Na página Artifacts, clique em Upload Artifact e selecione o pacote Python de terceiros necessário na caixa de diálogo exibida.
No painel de navegação à esquerda, clique em . Na página Deployments, clique em . Na caixa de diálogo, em Python Libraries, selecione o pacote Python de terceiros enviado.
Clique em Save.
-
-
Use um pacote Python de terceiros que exija compilação
Se um pacote Python de terceiros atender às seguintes condições, será necessário compilá-lo antes do uso: o pacote é um arquivo compactado no formato tar.gz ou um pacote de origem baixado de outro local, e o arquivo setup.py existe no diretório raiz do pacote compactado. Compile o pacote Python de terceiros em um ambiente compatível com o Flink antes de chamá-lo em uma implantação Python.
Recomendamos o uso do Python 3.9 na imagem quay.io/pypa/manylinux_2_28_x86_64 para compilar pacotes Python de terceiros. Os pacotes gerados pela imagem são compatíveis com a maioria dos sistemas operacionais Linux. Para obter mais informações sobre a imagem, consulte manylinux.
NotaO Python 3.9 está instalado no diretório /opt/python/cp39-cp39/bin/python3.
O exemplo a seguir demonstra como compilar e usar o pacote Python de terceiros opencv-python-headless.
-
Compile um pacote Python de terceiros.
-
Prepare o arquivo requirements.txt no seu dispositivo local. O código a seguir apresenta o conteúdo do arquivo:
opencv-python-headless numpy<2 -
Prepare o script build.sh no seu dispositivo local. O código a seguir apresenta o conteúdo do 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__ -
Na CLI, execute o seguinte 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.shApós a execução do comando, o sistema gera o arquivo deps.zip. Esse arquivo é o pacote Python de terceiros compilado.
Também é possível modificar o conteúdo do arquivo requirements.txt para instalar outros pacotes Python de terceiros necessários. Além disso, o arquivo requirements.txt aceita a especificação de várias dependências do Python.
-
-
Use o pacote Python de terceiros deps.zip em implantações Python.
Localize o seu workspace e clique em Console na coluna Actions.
No painel de navegação à esquerda, clique em Artifacts. Na página Artifacts, clique em Upload Artifact e selecione deps.zip na caixa de diálogo.
Na página , clique na sua implantação. Na guia Configuration, clique em Edit no canto superior direito da seção Basic e selecione o pacote deps.zip na lista suspensa Python Libraries.
Clique em Save.
-
Use um pacote JAR
Se a sua implantação Python usar classes Java, como um conector ou uma UDF Java, execute as operações a seguir para especificar o pacote JAR do conector ou da UDF Java.
Na guia Fully Managed Flink, localize o workspace a ser gerenciado e clique em Console na coluna Actions.
No painel de navegação à esquerda, clique em Artifacts. Na página Artifacts, clique em Upload Artifact e selecione o pacote JAR desejado na caixa de diálogo.
Na página Deployments, clique no nome da implantação desejada. Na guia Configuration, clique em Edit no canto superior direito da seção Basic e selecione o pacote JAR necessário na lista suspensa Additional Dependencies.
-
Na guia Configuration, clique em Edit no canto superior direito da seção Parameters e adicione a seguinte configuração ao campo Other Configuration.
Por exemplo, se o rascunho depender dos pacotes JAR chamados jar1.jar e jar2.jar, adicione as seguintes informações de configuração:
pipeline.classpaths: 'file:///flink/usrlib/jar1.jar;file:///flink/usrlib/jar2.jar' Clique em Save.
Use conectores, formatos de dados e catálogos integrados
Os conectores, formatos de dados e catálogos integrados são compatíveis apenas a partir do VVR 11.2.
Para usar conectores, formatos de dados e catálogos integrados em um job Python do Flink, especifique-os da seguinte maneira:
-
Na seção Parameters, adicione a configuração ao campo Other Configuration.
Para adicionar dependências de vários conectores integrados, como kafka e sls, adicione a seguinte configuração. Para consultar os nomes dos conectores integrados, consulte a documentação de cada conector em Supported connectors.
pipeline.used-builtin-connectors: kafka;slsPara adicionar dependências de vários formatos de dados integrados, como avro e parquet, adicione a seguinte configuração. Para consultar os nomes dos formatos de dados integrados, consulte a documentação dos Data formats compatíveis.
pipeline.used-builtin-formats: avro;parquetPara adicionar dependências de vários catálogos integrados, como hive-2.3.6 e paimon, adicione a seguinte configuração. Para consultar os nomes dos catálogos integrados, consulte a documentação de cada catálogo em Catalogs.
pipeline.used-builtin-catalogs: hive-2.3.6;paimon Clique em Save.
Use arquivos de dados
O Flink totalmente gerenciado não permite a depuração de implantações Python por meio do upload de arquivos de dados.
Os cenários a seguir demonstram como usar arquivos de dados:
-
Selecione um pacote na lista suspensa Python Archives
Se você tiver um grande número de arquivos de dados, compacte-os em um arquivo ZIP e execute as operações a seguir para usá-los em implantações Python:
Localize o seu workspace e clique em Console na coluna Actions.
No painel de navegação à esquerda, clique em Artifacts. Na página Artifact, clique em Upload Artifact e selecione o pacote ZIP do arquivo de dados desejado na caixa de diálogo exibida.
Na página , clique no nome da sua implantação. Na guia Configuration, clique em Edit no canto superior direito da seção Basic e selecione o pacote ZIP necessário na lista suspensa Python Archives.
-
Em UDFs Python, execute o seguinte comando para acessar um arquivo de dados. Neste exemplo, o nome do pacote que contém os arquivos de dados é mydata.zip.
def map(): with open("mydata.zip/mydata/data.txt") as f: ...
-
Selecione um arquivo de dados na lista suspensa Additional Dependencies
Se você tiver um pequeno número de arquivos de dados, execute as operações a seguir para acessá-los em implantações Python:
Localize o seu workspace e clique em Console na coluna Actions.
No painel de navegação à esquerda, clique em Artifacts. Na página Artifact, clique em Upload Artifact e selecione o arquivo de dados desejado na caixa de diálogo exibida.
Na página , clique no nome da implantação desejada. Na guia Configuration, clique em Edit no canto superior direito da seção Basic e selecione o arquivo de dados necessário na lista suspensa Additional Dependencies.
-
Em UDFs Python, execute o seguinte comando para acessar um arquivo de dados. Neste exemplo, o arquivo de dados chama-se data.txt.
def map(): with open("/flink/usrlib/data.txt") as f: ...
Referências
Para obter mais informações sobre como desenvolver um rascunho de API Python, consulte Develop PyFlink jobs.
Para obter mais informações sobre como desenvolver uma implantação Python do Realtime Compute for Apache Flink, consulte PyFlink job.
O Flink totalmente gerenciado oferece suporte a rascunhos SQL e DataStream. Para obter mais informações sobre como desenvolver rascunhos SQL e DataStream, consulte Job development overview e Develop a JAR job.