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"); } }
-
外部構成プロパティーを使用することで
ソーシング資格情報のハードコーディングを回避するために、これらの値をアプリケーション外部の構成プロパティーに保管することができます。
構成プロパティーを使用するには:
-
アプリケーションで使用する構成プロパティーを定義します。 これらのプロパティーは、以下のように実装できます:
-
エクスポートされた環境変数
-
資格情報ファイルに保管される値
以下の例は、環境変数の使用を示しています。 各環境変数には、
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がデフォルトでこの接頭部で始まるプロパティーを検索することを意味します。
-
-
サービス・クライアントをビルドします:
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_id
IDで識別される実行中のアプリケーションを停止します。 これはべき等の操作です。 要求されたアプリケーションが既に停止または完了している場合は、アクションを実行しません。
要求例: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));