使用 Java
IBM Analytics Engine SDK for Java 提供了一些功能,允许您以编程方式与无服务器实例的 IBM Analytics Engine 服务 API 进行交互。
可在此 GitHub 存储库中找到源代码。
获取 SDK
使用 IBM Analytics Engine Java SDK 的最简单方法是使用 Maven 来管理库依赖关系。 如果您不熟悉 Maven,请参阅 Maven in 5-Minutes。
Maven 使用名为 pom.xml
的文件来指定 Java 项目所需的库及其版本。 以下是使用 IBM Analytics Engine Java 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 密钥和服务实例标识) 来创建和配置客户机。 如果您未手动提供此信息,那么可以从凭证文件或环境变量获取这些凭证。
您可以在创建服务凭证时或通过 CLI 检索服务实例标识。 请参阅 检索服务端点。
要使用 IBM Analytics Engine Java SDK,您需要以下值:
-
IAM_API_KEY
: 创建服务凭证时生成的 API 密钥。 您可以通过在 IBM Cloud 仪表板上查看服务凭证来进行检索。 -
instance_guid
: 创建服务凭证时在resource_instance_id
中生成的值。 您可以通过在 IBM Cloud 仪表板上查看服务凭证来获取值。 -
IAE_ENDPOINT_URL
: 包含https://
协议的服务端点 URL。 请参阅 服务端点。
正在初始化配置
Java SDK 允许您通过以下两种方法之一来构造服务客户机:
-
通过以编程方式设置客户机选项
您可以通过指定各种客户机选项 (例如认证程序和服务端点 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 Engine API 客户机的缺省服务名称,这意味着缺省情况下 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"); } }
- 检索单个 instance.:
示例请求: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
标识标识的正在运行的应用程序。 这是一个幂等的操作。 如果请求的应用程序已停止或完成,那么不执行任何操作。
示例请求: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));