使用 Go SDK
IBM Analytics Engine Go SDK 允许您以编程方式与无服务器实例的 IBM Analytics Engine 服务 API 进行交互。
您可以从 GitHub获取 SDK 的源代码。 请参阅 ibm-iae-go-sdk。 iaesdk
库提供对 IBM Analytics Engine API 的完整访问权。
获取 SDK
您需要下载并安装 SDK 以在 Go 应用程序中使用该 SDK。 您可以通过输入以下命令来执行此操作:
go get -u github.com/IBM/ibm-iae-go-sdk
如果应用程序使用 Go 模块,那么可以向 Go 应用程序添加合适的导入,然后运行:
go mod tidy
导入软件包
安装 SDK 后,需要导入要在 Go 应用程序中使用的 SDK 软件包。
例如:
import (
"github.com/IBM/go-sdk-core/v3/core"
"github.com/IBM/ibm-iae-go-sdk/ibmanalyticsengineapiv3"
)
创建客户机和获取凭证
当您连接到 IBM Analytics Engine时,将使用您提供的凭证信息 (API 密钥和服务实例标识) 来创建和配置客户机。 如果不手动提供此信息,那么可以从凭证文件或环境变量获取这些凭证。
您可以在创建服务凭证时或通过 CLI 检索服务实例标识。 请参阅 检索服务端点。
要使用 IBM Analytics Engine Go SDK ,您需要以下值:
IAM_API_KEY
: 创建服务凭证时生成的 API 密钥。 您可以通过在 IBM Cloud 仪表板上查看服务凭证来进行检索。instance_guid
: 创建服务凭证时在resource_instance_id
中生成的值。 您可以通过在 IBM Cloud 仪表板上查看服务凭证来进行检索。IAE_ENDPOINT_URL
: 包含https://
协议的服务端点 URL。 请参阅 服务端点。
正在初始化配置
Go SDK 允许您通过以下两种方法之一来构造服务客户机:
-
通过编程方式设置客户机选项
您可以通过指定各种客户机选项 (例如,认证程序和服务端点 URL) ,以编程方式构造 IBM Analytics Engine 服务客户机的实例:
package main import ( "fmt" "github.com/IBM/go-sdk-core/v3/core" "github.com/IBM/ibm-iae-go-sdk/ibmanalyticsengineapiv3" ) func main() { // Create an IAM authenticator. authenticator := &core.IamAuthenticator{ ApiKey: "{apikey}", // eg "0viPHOY7LbLNa9eLftrtHPpTjoGv6hbLD1QalRXikliJ" URL: "{api auth url}", // "https://iam.cloud.ibm.com/identity/token" } // Construct an "options" struct for creating the service client. options := &ibmanalyticsengineapiv3.IbmAnalyticsEngineApiV3Options{ Authenticator: authenticator, URL: "{url}", // eg "https://api.us-south.ae.cloud.ibm.com" } // Construct the service client. ibmAnalyticsEngineApiService, err := ibmanalyticsengineapiv3.NewIbmAnalyticsEngineApiV3(options) if err != nil { panic(err) } // Service operations can now be invoked using the "ibmAnalyticsEngineApiService" variable. }
-
通过使用外部配置属性
为了避免对寻源凭证进行硬编码,可以将这些值存储在应用程序外部的配置属性中。
要使用配置属性:
-
定义要由应用程序使用的配置属性。 这些属性可以实现为:
- 导出的环境变量
- 存储在凭证文件中的值
以下示例显示了如何使用环境变量。 每个环境变量都必须以
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 将查找以此前缀折叠为大写开头的属性。 -
构建服务客户机:
// Create an IAM authenticator. authenticator := &core.IamAuthenticator{ ApiKey: "{apikey}", // eg "0viPHOY7LbLNa9eLftrtHPpTjoGv6hbLD1QalRXikliJ" URL: "{api auth url}", //https://iam.cloud.ibm.com/identity/token } // Construct an "options" struct for creating the service client. options := &ibmanalyticsengineapiv3.IbmAnalyticsEngineApiV3Options{ Authenticator: authenticator, URL: "{url}", // eg "https://api.us-south.ae.cloud.ibm.com" } // Construct the service client. service, err := ibmanalyticsengineapiv3.NewIbmAnalyticsEngineApiV3(options) if err != nil { panic(err) }
-
使用 iaesdk
的代码样本
除了此部分中的样本代码片段外,您还可以使用 IBM Analytics Engine V3 API 参考中的 Go 代码样本。
以下代码样本显示了如何执行以下操作:
- 检索单个实例的详细信息:
示例请求:(ibmAnalyticsEngineApi *IbmAnalyticsEngineApiV3) GetInstance(getInstanceOptions *GetInstanceOptions) (result *Instance, response *core.DetailedResponse, err error)
func main() { // Construct an instance of the GetInstanceOptions model getInstanceOptionsModel := new(ibmanalyticsengineapiv3.GetInstanceOptions) getInstanceOptionsModel.InstanceID = core.StringPtr("dc0e9889-eab2-4t9e-9441-566209499546") _, response, _ := ibmAnalyticsEngineApiService.GetInstance(getInstanceOptionsModel) fmt.Println(response) }
- 在给定的无服务器 Spark 实例上部署 Spark 应用程序:
样本请求;(ibmAnalyticsEngineApi *IbmAnalyticsEngineApiV3) CreateApplication(createApplicationOptions *CreateApplicationOptions) (result *ApplicationResponse, response *core.DetailedResponse, err error)
func main() { // Construct an instance of the CreateApplicationOptions model createApplicationOptionsModel := new(ibmanalyticsengineapiv3.CreateApplicationOptions) createApplicationOptionsModel.InstanceID = core.StringPtr("dc0e9889-eab2-4t9e-9441-566209499546") createApplicationOptionsModel.Application = core.StringPtr("cos://bucket_name.my_cos/my_spark_app.py") createApplicationOptionsModel.Class = core.StringPtr("IbmAnalyticsEngineApi") createApplicationOptionsModel.Arguments = []string{"/opt/ibm/spark/examples/src/main/resources/people.txt"} createApplicationOptionsModel.Conf = make(map[string]interface{}) createApplicationOptionsModel.Env = make(map[string]interface{}) _, applicationCreationResponse, _ := ibmAnalyticsEngineApiService.CreateApplication(createApplicationOptionsModel) fmt.Println(applicationCreationResponse) }
- 检索所有 Spark 应用程序:
示例请求:(ibmAnalyticsEngineApi *IbmAnalyticsEngineApiV3) ListApplications(listApplicationsOptions *ListApplicationsOptions) (result *ApplicationCollection, response *core.DetailedResponse, err error)
func main() { // Construct an instance of the ListApplicationsOptions model listApplicationsOptionsModel := new(ibmanalyticsengineapiv3.ListApplicationsOptions) listApplicationsOptionsModel.InstanceID = core.StringPtr("dc0e9889-eab2-4t9e-9441-566209499546") _, applicationCollection, _ := ibmAnalyticsEngineApiService.ListApplications(listApplicationsOptionsModel) fmt.Println(applicationCollection) }
- 检索给定 Spark 应用程序的详细信息:
示例请求:(ibmAnalyticsEngineApi *IbmAnalyticsEngineApiV3) GetApplication(getApplicationOptions *GetApplicationOptions) (result *ApplicationGetResponse, response *core.DetailedResponse, err error)
func main() { // Construct an instance of the GetApplicationOptions model getApplicationOptionsModel := new(ibmanalyticsengineapiv3.GetApplicationOptions) getApplicationOptionsModel.InstanceID = core.StringPtr("dc0e9889-eab2-4t9e-9441-566209499546") getApplicationOptionsModel.ApplicationID = core.StringPtr("db933645-0b68-4dcb-80d8-7b71a6c8e542") _, applicationGetResponse, _ := ibmAnalyticsEngineApiService.GetApplication(getApplicationOptionsModel) fmt.Println(applicationGetResponse) }
- 停止由
app_id
标识标识的正在运行的应用程序。 这是一个幂等的操作。 如果请求的应用程序已停止或完成,那么不执行任何操作。
示例请求:(ibmAnalyticsEngineApi *IbmAnalyticsEngineApiV3) DeleteApplication(deleteApplicationOptions *DeleteApplicationOptions) (response *core.DetailedResponse, err error)
func main() { // Construct an instance of the DeleteApplicationOptions model deleteApplicationOptionsModel := new(ibmanalyticsengineapiv3.DeleteApplicationOptions) deleteApplicationOptionsModel.InstanceID = core.StringPtr("dc0e9889-eab2-4t9e-9441-566209499546") deleteApplicationOptionsModel.ApplicationID = core.StringPtr("db933645-0b68-4dcb-80d8-7b71a6c8e542") applicationDeletionResponse, _ := ibmAnalyticsEngineApiService.DeleteApplication(deleteApplicationOptionsModel) fmt.Println(applicationDeletionResponse) }
- 返回给定应用程序的状态:
示例请求:(ibmAnalyticsEngineApi *IbmAnalyticsEngineApiV3) GetApplicationState(getApplicationStateOptions *GetApplicationStateOptions) (result *ApplicationGetStateResponse, response *core.DetailedResponse, err error)
func main() { // Construct an instance of the GetApplicationStateOptions model getApplicationStateOptionsModel := new(ibmanalyticsengineapiv3.GetApplicationStateOptions) getApplicationStateOptionsModel.InstanceID = core.StringPtr("dc0e9889-eab2-4t9e-9441-566209499546") getApplicationStateOptionsModel.ApplicationID = core.StringPtr("db933645-0b68-4dcb-80d8-7b71a6c8e542") _, applicationGetStateResponse, _ := ibmAnalyticsEngineApiService.GetApplicationState(getApplicationStateOptionsModel) fmt.Println(applicationGetStateResponse) }