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

利用対象...

* Cloud API Services Platform
* Cloud Big Data
* Cloud Big Data Platform
* Cloud Data Fabric
* Cloud Data Integration
* Cloud Data Management Platform
* Cloud Pipeline Designer Standard Edition
* Data Fabric

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

## Python 2とPython 3の相違点

Python 3プロセッサーの動作は旧バージョンのプロセッサーとほとんど変わりませんが、以下の2点が異なります。

* コードはPython 2コードではなく、Python 3コードである必要があります。
* レコードの変更を試みる時に、[Map] (マップ)と[Flatmap] (フラットマップ)のコンセプトが存在しません。そのため、ユーザーインターフェイス内にある対応するドロップダウンリストが削除されました。

レコードのフィルタリング、マッピング、フラットマッピングを行うための簡単なコードを書くことができるようになるため、後者の違いは重要である。

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コンテナー

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

## 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] &gt; [volumes] (ボリューム)セクションに、次のパラメーターを追加します:

  ```
  - /tmp/rqmts:/opt/rqmts
  ```

* [previewrunner] &gt; [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セクションを編集する必要があることのみです。

* クラスター内に[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プロセッサーに書き込み、変更を保存して、プレビューが正しく表示されることを確認します。