IBM Cloud Docs
Java の使用

Java の使用

IBM Analytics EngineSDK for Javaには、サーバーレス・インスタンス用のIBM Analytics EngineサービスAPIとプログラマチックに対話できる機能が用意されています。

ソース・コードは、この GitHub リポジトリーにあります。

SDK の取得

IBM Analytics EngineJava SDKを使用する最も簡単な方法は、Mavenを使用してライブラリーの依存関係を管理することです。 Maven に精通していない場合は、 Maven in 5-Minutesを参照してください。

Mavenは、pom.xmlというファイルを使用して、Javaプロジェクトに必要なライブラリーとそのバージョンを指定します。 IBM Analytics EngineJava SDKを使用してIBM Analytics Engineに接続するためのpom.xmlファイルの例を以下に示します。

<dependency>
  <groupId>com.ibm.cloud</groupId>
  <artifactId>ibm-analytics-engine-api</artifactId>
  <version>0.4.2</version>
</dependency>

クライアントの作成と資格情報の入手

IBM Analytics Engineに接続すると、指定した資格情報(APIキーとサービス・インスタンスID)を使用してクライアントが作成され、構成されます。 この情報を手動で指定しない場合、資格情報は資格情報ファイルまたは環境変数から取得できます。

サービス・インスタンスIDは、サービス資格情報の作成時に取得することも、CLIを使用して取得することもできます。 サービス・エンドポイントの取得を参照してください。

IBM Analytics EngineJava SDKを使用するには、以下の値が必要です:

  • IAM_API_KEY:サービス資格情報の作成時に生成されるAPIキー。 IBM Cloud ダッシュボードでサービス資格情報を表示することで取得できます。

  • instance_guid:サービス資格情報の作成時に生成されるresource_instance_idの値。 値を取得するには、 IBM Cloud ダッシュボードでサービス資格情報を表示します。

  • IAE_ENDPOINT_URL: https://プロトコルを含むサービス・エンドポイント URL。 サービス・エンドポイントを参照してください。

構成の初期化

Java SDKでは、以下の2つの方法のいずれかでサービス・クライアントを構成できます:

  • クライアント・オプションをプログラマチックに設定することで

    オーセンティケーターやサービス・エンドポイントURLなどのさまざまなクライアント・オプションをプログラマチックに指定することにより、IBM Analytics Engineサービス・クライアントのインスタンスを構成できます:

    import com.ibm.cloud.iaesdk.ibm_analytics_engine_api.v3.IbmAnalyticsEngineApi;
    import com.ibm.cloud.iaesdk.ibm_analytics_engine_api.v3.model.*;
    import com.ibm.cloud.sdk.core.http.Response;
    import com.ibm.cloud.sdk.core.security.*;
    import java.util.HashMap;
    
    private static IbmAnalyticsEngineApi ibmAnalyticsEngineApiService;
    
    private static String IAM_API_KEY = "{apikey}";
    private static String IAE_ENDPOINT_URL = "{url}";
    private static String API_AUTH_URL = "{api auth url}";
    
    public static void main(String[] args)
    {  
       HashMap<String, String> config = new HashMap<String, String>();
       config.put("APIKEY",IAM_API_KEY );
       config.put("AUTH_URL", API_AUTH_URL);
    
       try {
          // Create an IAM authenticator.
          Authenticator authenticator = IamAuthenticator.fromConfiguration(config);
          // Construct the service client.
          ibmAnalyticsEngineApiService = new IbmAnalyticsEngineApi(IbmAnalyticsEngineApi.DEFAULT_SERVICE_NAME, authenticator);
          // Set our service URL.
          ibmAnalyticsEngineApiService.setServiceUrl(IAE_ENDPOINT_URL);
          }
          catch (Exception e) {
          System.out.println("Exception");
          }
    }
    
  • 外部構成プロパティーを使用することで

    ソーシング資格情報のハードコーディングを回避するために、これらの値をアプリケーション外部の構成プロパティーに保管することができます。

    構成プロパティーを使用するには:

    1. アプリケーションで使用する構成プロパティーを定義します。 これらのプロパティーは、以下のように実装できます:

      • エクスポートされた環境変数

      • 資格情報ファイルに保管される値

        以下の例は、環境変数の使用を示しています。 各環境変数には、IBM_ANALYTICS_ENGINE_APIという接頭部を付ける必要があります。

        export IBM_ANALYTICS_ENGINE_API_URL=<IAE_ENDPOINT_URL>
        export IBM_ANALYTICS_ENGINE_API_AUTH_TYPE=iam
        export IBM_ANALYTICS_ENGINE_API_APIKEY=<IAM_API_KEY>
        

        IBM_ANALYTICS_ENGINE_APIは、IBM Analytics EngineAPIクライアントのデフォルトのサービス名です。これは、SDKがデフォルトでこの接頭部で始まるプロパティーを検索することを意味します。

    2. サービス・クライアントをビルドします:

      import com.ibm.cloud.iaesdk.ibm_analytics_engine_api.v3.IbmAnalyticsEngineApi;
      import com.ibm.cloud.iaesdk.ibm_analytics_engine_api.v3.model.*;
      import com.ibm.cloud.sdk.core.http.Response;
      import com.ibm.cloud.sdk.core.security.*;
      import java.util.HashMap;
      
      private static IbmAnalyticsEngineApi ibmAnalyticsEngineApiService;
      
      private static String IAM_API_KEY = "{apikey}";
      private static String IAE_ENDPOINT_URL = "{url}";
      private static String API_AUTH_URL = "{api auth url}";
      
      public static void main(String[] args)
      {
         HashMap<String, String> config = new HashMap<String, String>();
      	   config.put("APIKEY",IAM_API_KEY );
      	   config.put("AUTH_URL", API_AUTH_URL);
      
         try {
            // Create an IAM authenticator.
            Authenticator authenticator = IamAuthenticator.fromConfiguration(config);
            // Construct the service client.
            ibmAnalyticsEngineApiService = new IbmAnalyticsEngineApi(IbmAnalyticsEngineApi.DEFAULT_SERVICE_NAME, authenticator);
            // Set our service URL.
            ibmAnalyticsEngineApiService.setServiceUrl(IAE_ENDPOINT_URL);
      
         } catch (Exception e) {
            System.out.println("Exception");
         }
      }
      

コード・サンプル

このセクションのサンプル・コード・スニペットのほかに、IBM Analytics Engine V3 API リファレンスに記載されている Java コードのサンプルも使用できます。

以下のコード・サンプルは、次のことを行う方法を示しています。

  • IBM Analytics Engineサービス・インスタンスにアクセスする:
    import com.ibm.cloud.iaesdk.ibm_analytics_engine_api.v3.IbmAnalyticsEngineApi;
    import com.ibm.cloud.iaesdk.ibm_analytics_engine_api.v3.model.*;
    import com.ibm.cloud.sdk.core.http.Response;
    import com.ibm.cloud.sdk.core.security.*;
    import java.util.HashMap;
    
    private static IbmAnalyticsEngineApi ibmAnalyticsEngineApiService;
    
    private static String IAM_API_KEY = "{apikey}";
    private static String IAE_ENDPOINT_URL = "{url}";
    private static String API_AUTH_URL = "{api auth url}";
    
    public static void main(String[] args)
    {  
       HashMap<String, String> config = new HashMap<String, String>();
    		config.put("APIKEY",IAM_API_KEY );
    		config.put("AUTH_URL", API_AUTH_URL);
    
       try {
          // Create an IAM authenticator.
          Authenticator authenticator = IamAuthenticator.fromConfiguration(config);
          // Construct the service client.
          ibmAnalyticsEngineApiService = new IbmAnalyticsEngineApi(IbmAnalyticsEngineApi.DEFAULT_SERVICE_NAME, authenticator);
          // Set our service URL.
          ibmAnalyticsEngineApiService.setServiceUrl(IAE_ENDPOINT_URL);
    
       } catch (Exception e) {
          System.out.println("Exception");
       }
    }
    
  • 単一インスタンスの詳細を取得します:
    ServiceCall<Instance> getInstance(GetInstanceOptions getInstanceOptions)
    
    要求例:
    // Construct an instance of the GetInstanceOptions model
    GetInstanceOptions getInstanceOptionsModel = new GetInstanceOptions.Builder()
    .instanceId("dc0e9889-eab2-4t9e-9441-566209499546")
    .build();
    
    // Invoke operation with valid options model (positive test)
    Response<Instance> response = ibmAnalyticsEngineApiService.getInstance(getInstanceOptionsModel).execute();
    Instance responseObj = response.getResult();
    System.out.println(String.valueOf(responseObj));
    
  • 指定されたサーバーレスSparkインスタンスセットにSparkアプリケーションをデプロイします:
    ServiceCall<ApplicationResponse> createApplication(CreateApplicationOptions createApplicationOptions)
    
    要求例:
    // Construct an instance of the ApplicationRequestApplicationDetails model
    ApplicationRequestApplicationDetails applicationRequestApplicationDetailsModel = new ApplicationRequestApplicationDetails.Builder()
    .application("cos://ae-bucket-do-not-delete-dc0e9889-eab2-4t9e-9441-566209499546.s3.us-south.cloud-object-storage.appdomain.cloud/my_spark_application.py")
    .xClass("IbmAnalyticsEngineApi")
    .arguments(new java.util.ArrayList<String>(java.util.Arrays.asList("/opt/ibm/spark/examples/src/main/resources/people.txt")))
    .conf(new java.util.HashMap<String, Object>() { { put("spark.app.name", "MySparkApp"); } })
    .env(new java.util.HashMap<String, Object>() { { put("SPARK_ENV_LOADED", "2"); } })
    .build();
    
    // Construct an instance of the CreateApplicationOptions model
    CreateApplicationOptions createApplicationOptionsModel = new CreateApplicationOptions.Builder()
    .instanceId("dc0e9889-eab2-4t9e-9441-566209499546")
    .applicationDetails(applicationRequestApplicationDetailsModel)
    .build();
    
    // Invoke operation with valid options model (positive test)
    Response<ApplicationResponse> response = ibmAnalyticsEngineApiService.createApplication(createApplicationOptionsModel).execute();
    ApplicationResponse responseObj = response.getResult();
    System.out.println(String.valueOf(responseObj));
    
  • 指定されたインスタンスで実行されるすべてのSparkアプリケーションを取得します:
    ServiceCall<ApplicationCollection> listApplications(ListApplicationsOptions listApplicationsOptions)
    
    要求例:
    // Construct an instance of the ListApplicationsOptions model
    ListApplicationsOptions listApplicationsOptionsModel = new ListApplicationsOptions.Builder()
    .instanceId("dc0e9889-eab2-4t9e-9441-566209499546")
    .build();
    
    // Invoke operation with valid options model (positive test)
    Response<ApplicationCollection> response = ibmAnalyticsEngineApiService.listApplications(listApplicationsOptionsModel).execute();
    ApplicationCollection responseObj = response.getResult();
    System.out.println(String.valueOf(responseObj));
    
  • 特定のSparkアプリケーションの詳細を取得します:
    ServiceCall<ApplicationGetResponse> getApplication(GetApplicationOptions getApplicationOptions)
    
    要求例:
    // Construct an instance of the GetApplicationOptions model
    GetApplicationOptions getApplicationOptionsModel = new GetApplicationOptions.Builder()
    .instanceId("dc0e9889-eab2-4t9e-9441-566209499546")
    .applicationId("db933645-0b68-4dcb-80d8-7b71a6c8e542")
    .build();
    
    // Invoke operation with valid options model (positive test)
    Response<ApplicationGetResponse> response = ibmAnalyticsEngineApiService.getApplication(getApplicationOptionsModel).execute();
    ApplicationGetResponse responseObj = response.getResult();
    System.out.println(String.valueOf(responseObj));
    
  • app_idIDで識別される実行中のアプリケーションを停止します。 これはべき等の操作です。 要求されたアプリケーションが既に停止または完了している場合は、アクションを実行しません。
    ServiceCall<Void> deleteApplication(DeleteApplicationOptions deleteApplicationOptions)
    
    要求例:
    // Construct an instance of the DeleteApplicationOptions model
    DeleteApplicationOptions deleteApplicationOptionsModel = new DeleteApplicationOptions.Builder()
    .instanceId("dc0e9889-eab2-4t9e-9441-566209499546")
    .applicationId("db933645-0b68-4dcb-80d8-7b71a6c8e542")
    .build();
    
    // Invoke operation with valid options model (positive test)
    Response<Void> response = ibmAnalyticsEngineApiService.deleteApplication(deleteApplicationOptionsModel).execute();
    Void responseObj = response.getResult();
    System.out.println(String.valueOf(responseObj));
    
  • アプリケーションの状態を返します:
    ServiceCall<ApplicationGetStateResponse> getApplicationState(GetApplicationStateOptions getApplicationStateOptions)
    
    要求例:
    // Construct an instance of the GetApplicationStateOptions model
    GetApplicationStateOptions getApplicationStateOptionsModel = new GetApplicationStateOptions.Builder()
    .instanceId("dc0e9889-eab2-4t9e-9441-566209499546")
    .applicationId("db933645-0b68-4dcb-80d8-7b71a6c8e542")
    .build();
    
    // Invoke operation with valid options model (positive test)
    Response<ApplicationGetStateResponse> response = ibmAnalyticsEngineApiService.getApplicationState(getApplicationStateOptionsModel).execute();
    ApplicationGetStateResponse responseObj = response.getResult();
    System.out.println(String.valueOf(responseObj));