すべてのプロダクト
Search
ドキュメントセンター

Realtime Compute for Apache Flink:Python 依存関係の使用

最終更新日:Jun 26, 2026

Realtime Compute for Apache Flink の Python デプロイメントで、カスタム Python 仮想環境、サードパーティの Python パッケージ、JAR パッケージ、およびデータファイルを使用できます。 本トピックでは、これらの依存関係を Python デプロイメントで使用する方法について説明します。

概要

以下のセクションの手順に従って、Python 依存関係を使用できます。

プリインストールされた Python 環境

Flink 完全管理環境には、Python 環境がプリインストールされています。 Python のバージョンは次のとおりです。

  • Ververica Runtime (VVR) 8.0.10 以前: Python 3.7

  • VVR 8.0.11 以降: Python 3.9

説明

Python 環境にプリインストールされているサードパーティパッケージについては、「PyFlinkジョブの開発」をご参照ください。

一部のサードパーティ Python パッケージには glibc のバージョン要件があります。 Flink 完全管理環境にプリインストールされている glibc のバージョンは次のとおりです。

X86

  • VVR 8.x 以前: glibc 2.17

  • VVR 11.x 以降: glibc 2.31

ARM

  • VVR 11.2 以前: glibc 2.17

  • VVR 11.3 以降: glibc 2.31

説明

Glibc は上位互換性をサポートしています。 使用するサードパーティ Python パッケージで要求される glibc のバージョンは、環境内の glibc バージョンより新しくすることはできません。

カスタム Python 仮想環境の使用

説明

VVR 4.X では、Python 3.7 の仮想環境のみ使用できます。 VVR 6.X 以降では、より新しい Python バージョンの仮想環境を使用できます。

プリインストールされた Python 環境が要件を満たさない場合は、Python 仮想環境を介してカスタム Python バージョンを使用できます。 各 Python 仮想環境は、完全な Python ランタイム環境を提供します。 仮想環境には、一連の Python 依存関係パッケージをインストールできます。次のセクションでは、Python 仮想環境を準備する方法について説明します。

  1. Python 仮想環境を準備します。

    1. ローカルデバイスで setup-pyflink-virtual-env.sh スクリプトを準備します。 次のコードは、スクリプトの内容を示しています。

      X86

      set -e
      # miniforge.sh スクリプトをダウンロードします。
      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"
      
      # miniforge.sh スクリプトに実行権限を追加します。
      chmod +x miniforge.sh
      
      # miniforge をインストールします。
      ./miniforge.sh -b
      source /root/miniforge3/bin/activate
      
      # Python 仮想環境を作成します。
      mamba create -n venv python=3.10 -y
      eval "$(mamba shell hook --shell bash)"
      
      # Python 仮想環境をアクティベートします。
      mamba activate venv
      
      # PyFlink 依存関係をインストールします。
      pip install "ververica-flink==11.7.0"
      # VVR 11.5 以前のバージョンには専用の PyPI パッケージがないため、代わりにオープンソースの PyFlink をインストールします。
      # pip install "apache-flink==1.20.3" "setuptools<81"
      
      # パッケージサイズを削減するために、不要な JAR ファイルを削除します。
      find /root/miniforge3/envs/venv/lib/python3.10/site-packages/pyflink/ -name *.jar | xargs rm
      
      # Conda Python 仮想環境をデアクティベートします。
      mamba deactivate
      
      # 準備した Conda Python 仮想環境をパッケージ化します。
      cd /root/miniforge3/envs/ && zip -r /root/venv.zip venv 

      ARM

      set -e
      # miniforge.sh スクリプトをダウンロードします。
      wget "https://github.com/conda-forge/miniforge/releases/download/25.11.0-1/Miniforge3-25.11.0-1-Linux-aarch64.sh" -O "miniforge.sh"
      
      # miniforge.sh スクリプトに実行権限を追加します。
      chmod +x miniforge.sh
      
      # miniforge をインストールします。
      ./miniforge.sh -b
      source /root/miniforge3/bin/activate
      
      # Python 仮想環境を作成します。
      mamba create -n venv python=3.10 -y
      eval "$(mamba shell hook --shell bash)"
      
      # Python 仮想環境をアクティベートします。
      mamba activate venv
      
      # PyFlink 依存関係をインストールします。
      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"
      # VVR 11.5 以前のバージョンには専用の PyPI パッケージがないため、代わりにオープンソースの PyFlink をインストールします。
      # pip install "apache-flink==1.20.3" "setuptools<81"
      
      # パッケージサイズを削減するために、不要な JAR ファイルを削除します。
      find /root/miniforge3/envs/venv/lib/python3.10/site-packages/pyflink/ -name *.jar | xargs rm
      
      # Conda Python 仮想環境をデアクティベートします。
      mamba deactivate
      
      # 準備した Conda Python 仮想環境をパッケージ化します。
      cd /root/miniforge3/envs && zip -r /root/venv.zip venv
      説明

      このトピックの例では、デプロイメントで VVR 11.7 を使用し、Python 3.10 の仮想環境で実行します。 異なる VVR バージョンを使用したり、別の Python バージョンの仮想環境をインストールしたりする場合は、次のパラメーターを変更する必要があります。

      • mamba create :これを目的の Python バージョンに変更します。

      • pip install :

        • VVR 11.6 以降: ververica-flink をインストールし、バージョンをデプロイメントの VVR バージョンに合わせて変更します。

        • VVR 11.5 以前: apache-flink をインストールし、バージョンをデプロイメントの VVR バージョンに対応する Flink バージョンに変更します。 詳細については、「ストレージ管理」をご参照ください。

    2. ローカルデバイスで build.sh スクリプトを準備します。 次のコードは、スクリプトの内容を示しています。

      #!/bin/bash
      set -e -x
      
      yum install -y zip wget
      
      cd /root/
      bash /build/setup-pyflink-virtual-env.sh
      mv venv.zip /build/
    3. CLI で、次のコマンドを実行して Python 仮想環境をインストールします。

      X86

      docker run -it --rm -v $PWD:/build -w /build quay.io/pypa/manylinux_2_28_x86_64 bash ./build.sh

      ARM

      docker run -it --rm -v $PWD:/build -w /build quay.io/pypa/manylinux_2_28_aarch64 bash ./build.sh

      コマンドを実行すると、venv.zip という名前のファイルが生成されます。 この例では、Python 3.10 の仮想環境を使用します。

      上記のスクリプトを変更して、必要なサードパーティ Python パッケージを仮想環境にインストールすることもできます。

  2. Python デプロイメントで Python 仮想環境を使用します。

    1. Realtime Compute for Apache Flink コンソールにログインします。

    2. [Fully Managed Flink] タブで、管理するワークスペースを見つけ、[Actions] 列の [Console] をクリックします。

    3. 左側メニューで、[アーティファクト] をクリックします。 [アーティファクト] ページで、[Upload Artifact] をクリックします。 表示されるダイアログボックスで、venv.zip パッケージを選択します。

    4. 運用保守 > デプロイメント ページで、目的のジョブの名前をクリックします。

    5. [設定] タブで、[基本] セクションの右上隅にある [編集] をクリックし、[Python アーカイブ] ドロップダウンリストから venv.zip パッケージを選択します。

      デプロイメントが Python ユーザー定義関数 (UDF) を使用する SQL デプロイメントの場合は、[パラメーター] セクションの右上隅にある [編集] をクリックし、[その他の設定] フィールドに次の設定を追加します。

      python.archives: oss://.../venv.zip
    6. [パラメーター] セクションで、デプロイメントの VVR バージョンに基づいて、指定された Python 仮想環境をインストールするためのパスに関する設定を [その他の設定] フィールドに追加します。

      • VVR 6.X 以降

        python.executable: venv.zip/venv/bin/python
        python.client.executable: venv.zip/venv/bin/python
      • VVR 6.X より前のエンジンバージョン

        python.executable: venv.zip/venv/bin/python

サードパーティ Python パッケージの使用

説明

以下の説明にある Zip SafePyPI、および manylinux はサードパーティの Web サイトです。 これらの Web サイトにアクセスする際、アクセスに失敗したり、遅延が発生したりする場合があります。

次の2つのシナリオで、サードパーティ Python パッケージの使用方法を説明します。

  • 直接インポートできるサードパーティ Python パッケージの使用

    サードパーティ Python パッケージが Zip Safe パッケージである場合、次の手順で、インストールせずに Python デプロイメントでパッケージを直接使用できます。

    1. 直接インポートできるサードパーティ Python パッケージをダウンロードします。

      1. Web ブラウザーで PyPI にアクセスします。

      2. 検索ボックスに、apache-flink 1.20.3 などのサードパーティ Python パッケージの名前を入力します。

      3. 検索結果で、使用したいパッケージの名前をクリックします。

      4. 表示されるページの左側メニューで、[Download files] をクリックします。

      5. 名前に cp39-cp39-manylinux1 が含まれるパッケージの名前をクリックして、パッケージをダウンロードします。

    2. Realtime Compute for Apache Flink コンソールにログインします。

    3. [Fully Managed Flink] タブで、ワークスペースを見つけ、[Actions] 列の [Console] をクリックします。

    4. 左側のナビゲーションペインで、[アーティファクト] をクリックします。 [アーティファクト] ページで、[Upload Artifact] をクリックします。 表示されるダイアログボックスで、必要なサードパーティ Python パッケージを選択します。

    5. 左側のナビゲーションペインで、運用保守 > デプロイメント をクリックします。 [デプロイメント] ページで、Create Deployment > Python Deployment をクリックします。 ダイアログボックスで、[Python ライブラリ] に、アップロードしたサードパーティ Python パッケージを選択します。

    6. [Save] をクリックします。

  • コンパイルが必要なサードパーティ Python パッケージの使用

    サードパーティ Python パッケージが次の条件を満たす場合、使用する前にパッケージをコンパイルする必要があります。その条件とは、パッケージが tar.gz 形式の圧縮パッケージまたは別の場所からダウンロードしたソースパッケージであり、かつ圧縮パッケージのルートディレクトリに setup.py ファイルが存在することです。 Python デプロイメントでサードパーティ Python パッケージを呼び出す前に、Flink と互換性のある環境でそのパッケージをコンパイルする必要があります。

    quay.io/pypa/manylinux_2_28_x86_64 イメージの Python 3.9 を使用して、サードパーティ Python パッケージをコンパイルすることを推奨します。 このイメージで生成したパッケージは、ほとんどの Linux オペレーティングシステムと互換性があります。 イメージの詳細については、manylinux をご参照ください。

    説明

    Python 3.9/opt/python/cp39-cp39/bin/python3 ディレクトリにインストールされます。

    次の例では、サードパーティ Python パッケージ opencv-python-headless をコンパイルして使用する方法を説明します。

    1. サードパーティ Python パッケージをコンパイルします。

      1. ローカルデバイスで requirements.txt ファイルを準備します。 次のコードは、ファイルの内容を示しています。

        opencv-python-headless
        numpy<2
      2. ローカルデバイスで build.sh スクリプトを準備します。 次のコードは、スクリプトの内容を示しています。

        #!/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__
      3. CLI で、次のコマンドを実行します。

        X86

        docker run -it --rm -v $PWD:/build -w /build quay.io/pypa/manylinux_2_28_x86_64 bash ./build.sh

        ARM

        docker run -it --rm -v $PWD:/build -w /build quay.io/pypa/manylinux_2_28_aarch64 bash ./build.sh

        コマンドを実行すると、deps.zip という名前のファイルが生成されます。 このファイルは、コンパイル済みのサードパーティ Python パッケージです。

        requirements.txt ファイルの内容を変更して、他の必要なサードパーティ Python パッケージをインストールすることもできます。 さらに、requirements.txt ファイルには複数の Python 依存関係を指定できます。

    2. Python デプロイメントでサードパーティ Python パッケージ deps.zip を使用します。

      1. Realtime Compute for Apache Flink コンソールにログインします。

      2. ワークスペースを見つけ、[Actions] 列の [Console] をクリックします。

      3. 左側のナビゲーションペインで、[アーティファクト] をクリックします。 [アーティファクト] ページで、[Upload Artifact] をクリックします。 ダイアログボックスで、deps.zip を選択します。

      4. 運用保守 > デプロイメント ページで、デプロイメントをクリックします。 [設定] タブで、[基本] セクションの右上隅にある [編集] をクリックし、[Python ライブラリ] ドロップダウンリストから deps.zip パッケージを選択します。

    1. [Save] をクリックします。

JAR パッケージの使用

Python デプロイメントでコネクタや Java UDF などの Java クラスを使用する場合は、次の操作で、コネクタまたは Java UDF の JAR パッケージを指定できます。

  1. Realtime Compute for Apache Flink コンソールにログインします。

  2. [Fully Managed Flink] タブで、管理するワークスペースを見つけ、[Actions] 列の [Console] をクリックします。

  3. 左側のナビゲーションペインで、[アーティファクト] をクリックします。 [アーティファクト] ページで、[Upload Artifact] をクリックします。 表示されるダイアログボックスで、使用する JAR パッケージを選択します。

  4. [デプロイメント] ページで、目的のデプロイメントの名前をクリックします。 [設定] タブで、[基本] セクションの右上隅にある [編集] をクリックし、[追加の依存関係] ドロップダウンリストから必要な JAR パッケージを選択します。

  5. [設定] タブで、[パラメーター] セクションの右上隅にある [編集] をクリックし、[その他の設定] フィールドに次の設定を追加します。

    たとえば、ドラフトが jar1.jarjar2.jar という名前の2つの JAR パッケージに依存している場合は、次の設定を追加します。

    pipeline.classpaths: 'file:///flink/usrlib/jar1.jar;file:///flink/usrlib/jar2.jar'
  6. [Save] をクリックします。

組み込みコネクタ、データフォーマット、カタログの使用

説明

VVR 11.2 以降のバージョンのみをサポートします。

Python プログラムで組み込みのコネクタ、データフォーマット、カタログを使用するには、次の手順を実行してください。

  1. Python デプロイメントの詳細ページで、[パラメーター] セクションの [その他の設定] フィールドに設定を追加します。

    組み込みコネクタを使用するためのパラメーターを追加します。 次の設定では、Kafka コネクタと SLS コネクタを指定します。 具体的なコネクタ名については、「サポートされているコネクタ」のドキュメントをご参照ください。

    pipeline.used-builtin-connectors: kafka;sls

    組み込みデータフォーマットのパラメーターを追加します。 次の設定では、avroparquet フォーマットを指定します。 具体的なデータフォーマット名については、「データフォーマット」をご参照ください。

    pipeline.used-builtin-formats: avro;parquet

    組み込みカタログのパラメーターを追加します。 次の設定では、hive-2.3.6paimon カタログを指定します。 具体的なカタログについては、「カタログ」をご参照ください。

    pipeline.used-builtin-catalogs: hive-2.3.6;paimon
  2. [Save] をクリックします。

データファイルの使用

説明

Flink 完全管理では、データファイルをアップロードして Python デプロイメントをデバッグすることはできません。

次のシナリオで、データファイルの使用方法を説明します。

  • [Python アーカイブ] ドロップダウンリストからパッケージを選択

    多数のデータファイルがある場合は、データファイルを ZIP ファイルにパッケージ化し、次の操作で Python デプロイメントで使用できます。

    1. Realtime Compute for Apache Flink コンソールにログインします。

    2. ワークスペースを見つけ、[Actions] 列の [Console] をクリックします。

    3. 左側のナビゲーションペインで、[アーティファクト] をクリックします。 [アーティファクト] ページで、[Upload Artifact] をクリックします。 表示されるダイアログボックスで、目的のデータファイルの ZIP パッケージを選択します。

    4. 運用保守 > デプロイメント ページで、デプロイメントの名前をクリックします。 [設定] タブで、[基本] セクションの右上隅にある [編集] をクリックし、[Python アーカイブ] ドロップダウンリストから必要な ZIP パッケージを選択します。

    5. Python UDF で、次のコマンドを実行してデータファイルにアクセスします。 この例では、データファイルを含むパッケージの名前は mydata.zip です。

      def map():
          with open("mydata.zip/mydata/data.txt") as f:
          ...
  • [追加の依存関係] ドロップダウンリストからデータファイルを選択

    少数のデータファイルがある場合は、次の操作で、Python デプロイメントでこれらのファイルにアクセスできます。

    1. Realtime Compute for Apache Flink コンソールにログインします。

    2. ワークスペースを見つけ、[Actions] 列の [Console] をクリックします。

    3. 左側メニューで、[アーティファクト] をクリックします。 [アーティファクト] ページで、[Upload Artifact] をクリックします。 表示されるダイアログボックスで、目的のデータファイルを選択します。

    4. 運用保守 > デプロイメント ページで、目的のデプロイメントの名前をクリックします。 [設定] タブで、[基本] セクションの右上隅にある [編集] をクリックし[追加の依存関係] ドロップダウンリストから必要なデータファイルを選択します。

    5. Python UDF で、次のコマンドを実行してデータファイルにアクセスします。 この例では、データファイルの名前は data.txt です。

      def map():
          with open("/flink/usrlib/data.txt") as f:
          ...

関連ドキュメント

  • Python API ドラフトの開発方法の詳細については、「PyFlinkジョブの開発」をご参照ください。

  • Realtime Compute for Apache Flink の Python デプロイメントの開発方法の詳細については、「PyFlinkジョブ」をご参照ください。

  • Flink 完全管理は、SQL ドラフトと DataStream ドラフトをサポートしています。 SQL ドラフトと DataStream ドラフトの開発方法の詳細については、「ジョブ開発の概要」および「JARジョブの開発」をご参照ください。