Você pode usar ambientes virtuais Python personalizados, 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 nas implantações Python.
Visão geral
Use as dependências Python conforme as instruções das seções a seguir:
Ambiente Python pré-instalado
O ambiente do Flink totalmente gerenciado inclui um ambiente Python pré-instalado. As versões do Python são:
VVR 8.0.10 e anteriores: Python 3.7
VVR 8.0.11 e posteriores: Python 3.9
Para visualizar os pacotes de terceiros pré-instalados no ambiente Python, consulte Desenvolver um rascunho Python.
Alguns pacotes Python de terceiros exigem versões específicas da glibc. As versões da glibc pré-instaladas no ambiente Flink totalmente gerenciado são:
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
A glibc oferece compatibilidade com versões futuras. A versão da glibc exigida pelos pacotes Python de terceiros não pode ser superior à versão da glibc presente no ambiente.
Usar um ambiente virtual Python personalizado
No Ververica Runtime (VVR) 4.X, há suporte apenas para 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 Python fornece um ambiente de execução completo, onde você pode instalar diversos pacotes de dependência. A seção a seguir explica como preparar um ambiente virtual Python.
-
Prepare um ambiente virtual Python.
-
Prepare o script setup-pyflink-virtual-env.sh no dispositivo local. O código abaixo mostra 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 executa 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 ajuste a versão para corresponder à versão do VVR da sua implantação.
VVR 11.5 e anteriores: instale o apache-flink e ajuste a versão para a versão do Flink correspondente ao VVR da sua implantação. Para mais detalhes sobre como verificar a versão do Flink, consulte Gerenciamento de armazenamento.
-
Prepare o script build.sh no dispositivo local. O código abaixo mostra 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 comando a seguir para instalar o ambiente 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.shApós a execução do comando, o arquivo venv.zip é gerado. Neste exemplo, usa-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 Python nas implantações Python.
Faça login no console do Realtime Compute for Apache Flink.
Na aba Fully Managed Flink, localize o workspace desejado e clique em Console na coluna Actions.
No painel de navegação à esquerda, clique em Artifacts. Na página Artifacts, clique em Upload Artifact. Na caixa de diálogo exibida, selecione o pacote venv.zip.
Na página , clique no nome do job desejado.
-
Na aba 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 precisar usar 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 para instalação do ambiente virtual Python especificado no campo Other Configuration, conforme a 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
-
Usar um pacote Python de terceiros
Os dois cenários a seguir demonstram como usar um pacote Python de terceiros:
-
Uso de pacote Python de terceiros com importação direta
Se o pacote Python de terceiros for um pacote Zip Safe, siga as etapas abaixo para usá-lo diretamente nas implantações Python, sem necessidade de instalação:
-
Baixe um pacote Python de terceiros que permita importação direta.
Acesse o PyPI pelo navegador.
Insira o nome de um pacote Python de terceiros, como apache-flink 1.20.3, na caixa de pesquisa.
Nos resultados da busca, clique no nome do pacote desejado.
No painel de navegação à esquerda da página aberta, clique em Download files.
Clique no nome do pacote que contenha cp39-cp39-manylinux1 para baixar o arquivo.
Faça login no console do Realtime Compute for Apache Flink.
Na aba Streaming Compute Flink, localize o 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. Na caixa de diálogo exibida, selecione o pacote Python de terceiros desejado.
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.
-
-
Uso de pacote Python de terceiros que exige compilação
Um pacote Python de terceiros precisa ser compilado antes do uso caso atenda às seguintes condições: 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 por essa imagem são compatíveis com a maioria dos sistemas operacionais Linux. Para 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 o pacote Python de terceiros.
-
Prepare o arquivo requirements.txt no dispositivo local. O código abaixo mostra o conteúdo do arquivo:
opencv-python-headless numpy<2 -
Prepare o script build.sh no dispositivo local. O código abaixo mostra 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 arquivo deps.zip é gerado. Esse arquivo corresponde ao pacote Python de terceiros compilado.
Você também pode modificar o conteúdo do arquivo requirements.txt para instalar outros pacotes Python de terceiros necessários. Além disso, é possível especificar múltiplas dependências Python no arquivo requirements.txt.
-
-
Use o pacote Python de terceiros deps.zip nas implantações Python.
Faça login no console do Realtime Compute for Apache Flink.
Localize o 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. Na caixa de diálogo, selecione o arquivo deps.zip.
Na página , clique na sua implantação. Na aba 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.
-
Usar um pacote JAR
Se você usar classes Java, como um conector ou uma UDF Java, em sua implantação Python, siga os procedimentos abaixo para especificar o pacote JAR do conector ou da UDF Java.
Faça login no console do Realtime Compute for Apache Flink.
Na aba Fully Managed Flink, localize o workspace desejado e clique em Console na coluna Actions.
No painel de navegação à esquerda, clique em Artifacts. Na página Artifacts, clique em Upload Artifact. Na caixa de diálogo, selecione o pacote JAR desejado.
Na página Deployments, clique no nome da implantação desejada. Na aba 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 aba 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 de dois 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.
Usar conectores, formatos de dados e catálogos integrados
Suportado apenas nas versões VVR 11.2+.
Para usar conectores, formatos de dados e catálogos integrados em programas Python, proceda da seguinte forma:
-
Na página de detalhes da sua implantação Python, na seção Parameters, adicione as configurações ao campo Other Configuration.
Adicione o parâmetro para uso de conectores integrados. A configuração a seguir especifica os conectores Kafka e SLS. Para nomes específicos de conectores, consulte os documentos em Conectores suportados.
pipeline.used-builtin-connectors: kafka;slsAdicione o parâmetro para formatos de dados integrados. A configuração a seguir especifica os formatos avro e parquet. Para nomes específicos de formatos de dados, consulte Formatos de dados.
pipeline.used-builtin-formats: avro;parquetAdicione o parâmetro para catálogos integrados. A configuração a seguir especifica os catálogos hive-2.3.6 e paimon. Para catálogos específicos, consulte Catálogos.
pipeline.used-builtin-catalogs: hive-2.3.6;paimon Clique em Save.
Usar arquivos de dados
O Flink totalmente gerenciado não permite depurar implantações Python por meio do upload de arquivos de dados.
Os cenários a seguir demonstram como usar arquivos de dados:
-
Selecionar um pacote na lista suspensa Python Archives
Se você tiver muitos arquivos de dados, compacte-os em um arquivo ZIP e siga as operações abaixo para usá-los em implantações Python:
Faça login no console do Realtime Compute for Apache Flink.
Localize o 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. Na caixa de diálogo exibida, selecione o pacote ZIP do arquivo de dados desejado.
Na página , clique no nome da sua implantação. Na aba 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 comando a seguir 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: ...
-
Selecionar um arquivo de dados na lista suspensa Additional Dependencies
Se tiver poucos arquivos de dados, siga as operações abaixo para acessá-los em implantações Python:
Faça login no console do Realtime Compute for Apache Flink.
Localize o 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. Na caixa de diálogo exibida, selecione o arquivo de dados desejado.
Na página , clique no nome da implantação desejada. Na aba 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 comando a seguir 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 mais informações sobre como desenvolver um rascunho de API Python, consulte Desenvolver jobs PyFlink.
Para mais detalhes sobre como desenvolver uma implantação Python do Realtime Compute for Apache Flink, consulte Job PyFlink.
O Flink totalmente gerenciado suporta rascunhos SQL e DataStream. Para saber mais sobre o desenvolvimento de rascunhos SQL e DataStream, consulte Visão geral do desenvolvimento de jobs e Desenvolver um job JAR.