Python 3サードパーティライブラリーをインストール - Cloud

Talend Cloud Pipeline Designerプロセッサーガイド

Version
Cloud
Language
日本語 (日本)
Product
Talend Cloud
Module
Talend Pipeline Designer
Content
ジョブデザインと開発 > パイプラインのデザイン

Python 3はPythonプロセッサーの代わりになります。古いプロセッサーで行えたことがすべてサポートされ、サードパーティライブラリーのインストールのような機能がいくつか追加されます。

Python 2とPython 3の相違点

新しいプロセッサーは、以下の2つの注目される相違点を除いて、古いプロセッサーのように機能します:
  • コードはPython 2コードではなく、Python 3コードである必要があります。
  • レコードの変更を試みる時に、[Map] (マップ)[Flatmap] (フラットマップ)のコンセプトが存在しません。そのため、ユーザーインターフェース内にある対応するドロップダウンリストが削除されました。

2つ目の相違点によって、マップレコードまたはフラットマップレコードをフィルタリングするコードを明快に書き込めるため、重大です。

MAPまたはFLATMAPの使用が必要でなくなったPython 3コードの例:
if input['type'] == "house":
    # Single family dwellings have a top-level occupant (MAP).
    output = input['occupant']
elif input['type']  == "apartment":
    # Apartment blocks have many occupants (FLATMAP).
    output = [apt['occupant'] for apt in input['subdwellings']
else:
    # Deleting the record (FILTER).
    output = None

ライブラリーをインストール

まず、通常どおりにRemote Engine Gen2を設定する必要があります。ライブラリーのインストールは、2つの異なるロケーションで行われます:
  • [previewrunner]コンテナー
  • [livy]コンテナーまたは[Databricks]クラスター(お使いの場合)

ファイルを使うか、コマンドラインを経由してライブラリーをインストールできます。

requirements.txtファイルを使ってRemote Engine Gen2にライブラリーをインストール

[previewrunner]コンテナーでは:

previewrunnerコンテナーにライブラリーをインストールするには:
  • ローカルマシン内にフォルダーを作成します。たとえば、/tmp/rqmtsと名付けます。

  • 次のファイルを開いて編集します:

    default/docker-compose.yml - AWS米国、AWS欧州、AWSアジアパシフィック、Azureリージョンでエンジンを使用している場合

    eap/docker-compose.yml - Early Adopter Program (早期導入者プログラム)の一部としてエンジンを使用している場合

  • ファイルの[previewrunner] > [volumes] (ボリューム)セクションに、次のパラメーターを追加します:
    - /tmp/rqmts:/opt/rqmts
  • [previewrunner] > [environment] (環境)セクションに次のパラメーターを追加して、変更を保存します:
    PYTHON_RQMTS_PATH: /opt/rqmts

    パスへの書き込みアクセスがある限り、それらを完全にカスタマイズできます。

  • Talend Cloud Pipeline Designerに移動して、[Python 3]プロセッサーを含むパイプラインの作成が通常どおりで行われることを確認します。
  • /tmp/rqmtsフォルダー内にrequirements.txtファイルを作成します。このファイルは、Python Virtual Environmentにインストールするライブラリーを含む必要があります:
    jinja2==2.11.2
  • パイプラインに移動し、requirements.txtで指定されたライブラリーを使用するコードをPython 3プロセッサーに追加します。例:
    from jinja2 import Template
    
    t = Template("Hello {{something}}!")
    output["hello"] = t.render(something = input["Op"])

変更を保存して、データが正しくプレビューされることを確認します。ローカルマシン上のrequirements.txtファイルを変更して、コードを更新できます。すべてが正しく動作していることがわかるべきです。

[livy]コンテナーでは:

手順は、[previewrunner]コンテナーのと同じで、唯一の相違点はdocker-compose.xmlファイルの[livy]セクションを編集する必要があることのみです。

Databricksでは:

Databricksクラスターは、5.5 LTSで使用できないPython 3.6+がインストール済みである必要があります。そのため、最小限としてDatabricks 5.5 LTS MLに基づいたクラスターを設定する必要があります。

  • クラスター内に[PYTHON_RQMTS_PATH]環境変数を追加します。ワーカーサーバーが強制終了すれば削除されるフォルダーではなく、マウントされたボリュームをポイントする必要があります。

    例: /dbfs/tpd-python3-rqmts

  • previewrunnerコンテナーと同様のステップ(/dbfs/tpd-python3-rqmtsフォルダー内にrequirements.txtを作成し、パイプラインを更新するなど)を繰り返します。すべてが正しく動作するべきです。

コマンドライン経由でRemote Engine Gen2にライブラリーをインストール

またライブラリーは、コマンドラインを使うか、シェルスクリプトを起動して直接にインストールできます。

そうするには、ライブラリーを[previewrunner]コンテナーと[livy]コンテナーの両方にインストールする必要があります。

[previewrunner]コンテナーにライブラリーをインストールするには:
  • まずは、Talend Cloud Pipeline Designer[Python 3]プロセッサーを含むパイプラインを作成し、それをプレビューしてみます。

    これによって、[previewrunner]コンテナーでPythonファイルをすべて解凍することが強制されます。

  • コマンドラインから、次のようなコマンドを実行し、numpyをインストールします。例:
    docker exec -it [previewrunner_docker_img_name] \
        bash -c "source /tmp/luci/local/env/default/bin/activate && pip install numpy"
  • それから、[Python 3]プロセッサーでコードを編集して、変更を保存できます。
[livy]コンテナーにライブラリーをインストールするには:
  • Talend Cloud Pipeline Designerで、[Python 3]プロセッサーを含むパイプラインを作成し、すべてのPythonファイルの解凍を強制します。

  • コマンドラインから、次のようなコマンドを実行し、jinja2をインストールします。例:
    docker exec -it [livy_docker_img_name] \
        bash -c "source /tmp/luci/local/env/default/bin/activate && pip install jinja2"
  • jinja2を使用するコードを[Python 3]プロセッサーに書き込み、変更を保存して、プレビューが正しく表示されることを確認します。