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))