IBM Cloud Docs
为 Python 软件包安装创建库集

为 Python 软件包安装创建库集

库集是可以在使用库的 Spark 应用程序中创建和引用的库的集合。 库集存储在创建实例时与该实例关联的实例主存储器中。

目前,只能通过 condapip install 安装 Python 软件包。

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": 指定用于标识库集的名称。 创建的库集存储在您指定为 instance home 的 IBM Cloud Object Storage 实例中具有此名称的文件中。 重要信息: 如果创建多个库集,那么必须对每个库集使用唯一名称。 否则,它们将相互覆盖。
    • "libraries": 定义一组库。 可以在此部分中指定一个或多个库。 此元素每个库包管理器都有一个子 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"
    }
    

    当状态变为 COMPLETE 时,库集创建完成。

  4. 通过调用应用程序状态 REST API 来跟踪应用程序的状态。 请参阅 获取应用程序的状态