IBM Cloud Docs
使用 Python SDK

使用 Python SDK

可以通过从 Python Package Index 安装库 iaesdk 来安装 IBM Analytics Engine SDK。

在命令行中输入以下命令:

pip install --upgrade "iaesdk>=1.1.1"

可在 GitHub上找到源代码。 iaesdk 库提供对 IBM Analytics Engine API 的完整访问权。

创建 IBM Analytics Engine 服务资源或低级客户机时,需要提供服务端点和 API 密钥。

服务实例标识也称为实例 GUID。 您可以在创建服务凭证时或通过 CLI 检索服务实例标识。 请参阅 检索服务端点

要使用 iaesdk 库,您需要以下值:

  • IAM_API_KEY: 创建服务凭证时生成的 API 密钥。 您可以通过在 IBM Cloud 仪表板上查看服务凭证来进行检索。
  • instance_guid: 创建服务凭证时在 resource_instance_id 中生成的值。 您可以通过在 IBM Cloud 仪表板上查看服务凭证来进行检索。
  • IAE_ENDPOINT_URL: 包含 https:// 协议的服务端点 URL。 请参阅 服务端点

使用 iaesdk 的代码样本

安装 Python SDK 后,开始使用该 SDK ,包括将凭证寻源到 IBM Analytics Engine 服务,调用该服务,然后发出不同的集群命令,如以下样本代码片段中所示。 这些代码示例是针对 Python 3.7 编写的。

除了本主题中的样本代码片段外,您还可以使用 IBM Analytics Engine V3 API 参考中的 Python 代码样本。

以下代码样本显示了如何执行以下操作:

  • 向 IBM Analytics Engine 服务认证并构建服务客户机:

    from iaesdk import IbmAnalyticsEngineApiV3
    from ibm_cloud_sdk_core.authenticators import IAMAuthenticator
    import json
    
    # Constants for IBM Analytics Engine values
    IAM_API_KEY = "{apikey}" # eg "W00YiRnLW4a3fTjMB-odB-2ySfTrFBIQQWanc--P3byk"
    IAE_ENDPOINT_URL = "{url}" # Current list avaiable at https://cloud.ibm.com/apidocs/ibm-analytics-engine#service-endpoints
    const API_AUTH_URL = "{api auth url}"  # "https://iam.cloud.ibm.com/identity/token"
    
    # Create an IAM authenticator.
    authenticator = IAMAuthenticator(apikey=IAM_API_KEY, url=API_AUTH_URL)
    
    # Construct the service client.
    ibm_analytics_engine_api_service = IbmAnalyticsEngineApiV3(authenticator=authenticator)
    
    # Set our custom service URL
    ibm_analytics_engine_api_service.set_service_url(IAE_ENDPOINT_URL)
    
    # Service operations can now be invoked using the "ibm_analytics_engine_api_service" variable.
    
    
  • 检索单个实例的详细信息:

    get_instance(self,
        instance_id: str,
        **kwargs
    ) -> DetailedResponse
    

    示例请求:

    instance = ibm_analytics_engine_api_service.get_instance(
    instance_id='dc0e9889-eab2-4t9e-9441-566209499546'
    ).get_result()
    print(json.dumps(instance, indent=2))
    
  • 在给定的无服务器 Spark 实例上部署 Spark 应用程序:

    create_application(self,
        instance_id: str,
        *,
        application_details: 'ApplicationRequestApplicationDetails' = None,
        **kwargs
    ) -> DetailedResponse
    

    示例请求:

    application_request_application_details_model = {
      'application': '/opt/ibm/spark/examples/src/main/python/wordcount.py',
      'arguments': ['/opt/ibm/spark/examples/src/main/resources/people.txt']
      }
    create_application_response = ibm_analytics_engine_api_service.create_application(
      instance_id='dc0e9889-eab2-4t9e-9441-566209499546',
      application_details=application_request_application_details_model
    ).get_result()
    print(json.dumps(create_application_response, indent=2))
    
  • 检索在给定实例上运行的所有 Spark 应用程序:

    list_applications(self,
        instance_id: str,
        **kwargs
    ) -> DetailedResponse
    

    示例请求:

    list_applications_response = ibm_analytics_engine_api_service.list_applications(
      instance_id='dc0e9889-eab2-4t9e-9441-566209499546'
      ).get_result()
    print(json.dumps(list_applications_response, indent=2))
    
  • 检索给定 Spark 应用程序的详细信息:

    get_application(self,
        instance_id: str,
        application_id: str,
        **kwargs
    ) -> DetailedResponse
    

    示例请求:

    get_application_response = ibm_analytics_engine_api_service.get_application(
      instance_id='dc0e9889-eab2-4t9e-9441-566209499546',
      application_id='db933645-0b68-4dcb-80d8-7b71a6c8e542'
      ).get_result()
    print(json.dumps(get_application_response, indent=2))
    
  • 停止由 app_id 标识标识的正在运行的应用程序。 这是一个幂等的操作。 如果请求的应用程序已停止或完成,那么不执行任何操作。

    delete_application(self,
        instance_id: str,
        application_id: str,
        **kwargs
    ) -> DetailedResponse
    

    示例请求:

    delete_application_by_id_response = ibm_analytics_engine_api_service.delete_application(
      instance_id='dc0e9889-eab2-4t9e-9441-566209499546',
      application_id='db933645-0b68-4dcb-80d8-7b71a6c8e542'
      ).get_result()
    print(json.dumps(delete_application_by_id_response, indent=2))
    
  • 返回由 app_id 标识标识的应用程序的状态:

    get_application_state(self,
        instance_id: str,
        application_id: str,
        **kwargs
    ) -> DetailedResponse
    

    示例请求:

    get_application_state_response = ibm_analytics_engine_api_service.get_application_state(
      instance_id='dc0e9889-eab2-4t9e-9441-566209499546',
      application_id='db933645-0b68-4dcb-80d8-7b71a6c8e542'
      ).get_result()
    print(json.dumps(get_application_state_response, indent=2))