Python パッケージ・インストール用のライブラリー・セットの作成

ライブラリー・セットは、ライブラリーを使用するSparkアプリケーションで作成および参照できるライブラリーの集合です。 ライブラリー・セットは、インスタンスの作成時にインスタンスに関連付けられたインスタンス・ホーム・ストレージに保管されます。

現在、Pythonパッケージはcondaまたはpip installを介してのみインストールできます。

Analytics Engineには、customize_instance_app.pyという名前のSparkアプリケーションがバンドルされています。これは、カスタム・パッケージを使用してライブラリー・セットを作成するために実行し、Sparkアプリケーションによって取り込むことができます。

前提条件:ライブラリー・セットを作成するには、Sparkアプリケーションをサブミットする権限が必要です。 ユーザー権限を参照してください。

ライブラリー・セットを作成するには:

  1. 以下のようなJSONファイルを準備します:

    {
      "library_set": {
        "action": "add",
        "name": "my_library_set",
        "libraries": {
          "conda": {
            "python": {
              "packages": ["numpy"]
              }
          }
      }
      }
    }
    

    JSON属性の説明は以下のとおりです:

    • "library_set":ライブラリー・セットを定義する最上位のJSONオブジェクト。
    • "action":ライブラリー・セットに対して実行するアクションを指定します。 ライブラリー・セットを作成するには、"add"を使用します。 現在、サポートされているオプションは"add"のみです。
    • "name":ライブラリー・セットが識別される名前を指定します。 作成されたライブラリー・セットは、IBM Cloud Object Storageインスタンス内のこの名前のファイルに保管されます。これはinstance homeとして指定したものです。 重要:複数のライブラリー・セットを作成する場合は、セットごとに固有の名前を使用する必要があります。 その他の場合、相互に上書きされます。
    • "libraries":ライブラリーのセットを定義します。 このセクションでは、1つ以上のライブラリーを指定することができます。 このエレメントには、ライブラリー・パッケージ・マネージャーごとに1つの子JSONオブジェクトがあります。 現時点では、"conda"パッケージ・マネージャーと"pip"パッケージ・マネージャーのみがサポートされています。 "pip"または"conda"を使用して、Pythonパッケージをインストールします。
    • "conda":ライブラリー・パッケージ・マネージャー。
    • "python":ライブラリー言語。 現在は、Pythonのみがサポートされています。
    • "packages":インストールするパッケージのリスト。 特定のバージョンのパッケージをインストールするには、 package_name==version という形式でバージョンを渡します。
  2. IAMトークンを取得します。

  3. 以下のREST API呼び出しで、JSONファイルを"arguments"として受け渡します。 REST API呼び出しに受け渡す際には、必要に応じて引用符をエスケープしてください。

    curl -X POST https://api.us-south.ae.cloud.ibm.com/v3/analytics_engines/<instance_id>/spark_applications --header "Authorization: Bearer <IAM token>" -H "content-type: application/json" -d @createLibraryset.json
    

    createLibraryset.json の例:

    {
      "application_details": {
        "application": "/opt/ibm/customization-scripts/customize_instance_app.py",
        "arguments": ["{\"library_set\":{\"action\":\"add\",\"name\":\"my_library_set\",\"libraries\":{\"conda\":{\"python\":{\"packages\":[\"numpy\"]}}}}}"]
        }
    }
    

    重要:アプリケーション引数として渡されるストリング内のすべての二重引用符文字をエスケープする必要があります。

    アプリケーションが受け入れられると、以下のような応答を受け取ります:

    {
      "id": "87e63712-a823-4aa1-9f6e-7291d4e5a113",
      "state": "accepted"
    }
    

    状態がFINISHEDになると、ライブラリー・セットの作成は完了します。

  4. アプリケーション状況REST APIを呼び出して、アプリケーションの状況を追跡します。 アプリケーションの状況の取得を参照してください。