云服务器内容精选

  • 临时AK/SK认证方式样例代码 方法定义 DwsRestClient(String endpoint, String accessKey, String secretKey, String securityToken) 参数说明 参数名 是否必填 描述 endpoint 是 FabricSQL提供的服务地址。 accessKey 是 临时接入键标识 secretKey 是 临时安全接入键 securityToken 是 临时访问密钥Token 代码样例 // 从环境变量读取参数(推荐方式) String endpoint = "example.com"; String accessKey = System.getenv("FABRICLSQL_AC CES S_KEY"); String secretKey = System.getenv("FABRICLSQL_SECRET_KEY") String securityToken = System.getenv("FABRICLSQL_SECURITY_TOKEN"); // 验证参数是否为空(可选) if (endpoint == null || accessKey == null || secretKey == null || securityToken == null) { throw new IllegalArgumentException("Missing required environment variables"); } DwsRestClient client = new DwsRestClient(endpoint, accessKey, secretKey, securityToken);
  • 永久AK/SK认证方式样例代码 方法定义 DwsRestClient(String endpoint, String accessKey, String secretKey) 参数说明 参数名 是否必填 描述 endpoint 是 FabricSQL提供的服务地址。 accessKey 是 接入键标识 secretKey 是 安全接入键 代码样例 // 从环境变量读取参数(推荐方式) String endpoint = "example.com"; String accessKey = System.getenv("FABRICLSQL_ACCESS_KEY"); String secretKey = System.getenv("FABRICLSQL_SECRET_KEY"); // 验证参数是否为空(可选) if (endpoint == null || accessKey == null || secretKey == null) { throw new IllegalArgumentException("Missing required environment variables"); } DwsRestClient client = new DwsRestClient(endpoint, accessKey, secretKey); 认证用的AK和SK硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全。 本示例以AK和SK保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量FABRICLSQL_ACCESS_KEY和FABRICLSQL_SECRET_KEY。
  • AK/SK认证方式样例代码 代码样例 1 2 3 4 5 6 String ak = System.getenv("xxx_SDK_AK");//访问密钥ID。 String sk = System.getenv("xxx_SDK_SK");//与访问密钥ID结合使用的密钥。 String regionName = "regionname"; String projectId = "project_id"; DLI Info dliInfo = new DLIInfo(regionName, ak, sk, projectId); DLIClient client = new DLIClient(AuthenticationMode.AKSK, dliInfo); 参数说明及获取方式 参数说明 ak:账号 Access Key sk:账号 Secret Access Key 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放, 使用时解密, 确保安全。 本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量xxx_SDK_AK和xxx_SDK_SK。 regionName :所属区 域名 称 projectId :项目ID 通过以下方式可获取AK/SK,项目ID及对应的region信息。 登录管理控制台。 鼠标指向界面右上角的登录用户名,在下拉列表中单击“我的凭证”。 在左侧导航栏中选择“访问密钥”,单击“新增访问密钥”。根据提示输入对应信息,单击“确定”。 在弹出的提示页面单击“立即下载”。下载成功后,打开凭证文件,获取AK/SK信息。 左侧导航栏单击“API凭证”,在“项目列表”中获取“项目ID”即为project_id值,对应的“项目”即为region的值。
  • Token认证方式样例代码 代码样例 1 2 3 4 5 6 7 String domainName = "domainname"; String userName = "username"; String password = "password"; String regionName = "regionname"; String projectId = "project_id"; DLIInfo dliInfo = new DLIInfo(regionName, domainName, userName, password, projectId); DLIClient client = new DLIClient(AuthenticationMode.TOKEN, dliInfo); 参数说明 参数获取方式请参考获取账号、 IAM 用户、项目、用户组、区域、委托的名称和ID。 domainname:账号名。 username:用户名 password:用户名密码 regionname:所属区域名称 project_id:项目ID 认证用的password硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全。 可以通过set方式修改endpoint,即dliInfo.setServerEndpoint(endpoint)。
  • 查询作业状态 相关链接 查询作业状态 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 private static void checkRunning(DliClient dliClient, String jobId) throws DLIException { while (true) { ShowSqlJobStatusResponse resp; try { resp = dliClient.showSqlJobStatus(new ShowSqlJobStatusRequest().withJobId(jobId)); } catch (Exception e) { throw new DLIException("Failed to get job status by id: " + jobId, e); } String status = resp.getStatus().getValue(); logger.info(String.format("SparkSQL Job id %s status: %s", jobId, status)); if ("FINISHED".equals(status)) { return; } if ("FAILED".equals(status) || "CANCELLED".equals(status)) { throw new DLIException("Run job failed or cancelled, details: " + resp.getMessage()); } try { Thread.sleep(1000L); } catch (InterruptedException e) { throw new DLIException("Check job running interrupted."); } } }
  • 查询作业结果 相关链接: SELECT查询语句 作业参数设置 关键SDK API: com.huawei.dli.sdk.read.ResultSet,纯OBS读数据相关API调用,DLI提供了一个默认 OBS csv reader实现,可依据业务需求自定义实现。具体操作参考OBS API参考。 com.huawei.dli.sdk.SQLJob#submitQuery(),需要开启结果写作业桶特性,否则默认只预览前1000条数据。 您可以通过查询作业状态API响应体中的 result_path 来判断是否已开启作业结果写作业桶特性。 待作业运行结束后,如果result_path 以 obs:// 开头,则已开启作业结果写作业桶特性,否则未开启。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 private static String queryData(DLIInfo dliInfo, String selectSql) throws DLIException { SQLJob sqlJob = new SQLJob(dliInfo, selectSql); // 如有需要,您可在此处设置作业参数,比如:sqlJob.setConf() // 1. 提交查询作业到DLI,使用DLI封装实现提交并等待结果。 // 注1:此处需要根据SQL执行时长预取设置超时时间,默认5min。 // 注2:此处需要开启作业结果写作业桶特性,否则默认只预览前1000条数据。 sqlJob.setJobTimeout(30 * 60); ResultSet resultSet1 = null; try { resultSet1 = sqlJob.submitQuery(); handleResult(resultSet1); } finally { if (resultSet1 != null) { resultSet1.close(); } } return sqlJob.getJobId(); }
  • 查询指定作业的结果 使用说明 com.huawei.dli.sdk.SQLJob#getResultSet(),OBS读数据相关API调用,DLI提供了一个OBS csv reader实现,可依据业务需求自定义实现。 使用本方法的前提是需要开启结果写作业桶特性。可通过查询作业状态API响应体中的 result_path 来判断是否已开启作业结果写作业桶特性。待作业运行结束后,如果result_path 以 obs:// 开头,则已开启作业结果写作业桶特性,否则未开启。 相关链接 SQL语法参考基本语句 OBS文档 查询作业状态API 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 private static void queryDataByJobId(DLIInfo dliInfo, String jobId) throws DLIException { // 检查该jobId对应的作业是否已运行结束,如未运行结束,则等待运行结束 SQLJob sqlJob = new SQLJob(dliInfo, null); sqlJob.setJobId(jobId); checkRunning(V3ClientUtils.getDliClient(dliInfo), jobId); // 根据jobId,获取结果数据的schema、结果数据在用户作业桶中的存储路径 ShowSqlJobStatusResponse resp = V3ClientUtils.getDliClient(dliInfo) .showSqlJobStatus(new ShowSqlJobStatusRequest().withJobId(jobId)); sqlJob.setJobStatus(resp.getStatus().getValue()); sqlJob.setResultSchema(SchemaUtils.getSchemaFromJson(resp.getDetail())); sqlJob.setResultPath(resp.getResultPath()); sqlJob.setResultCount(resp.getResultCount() != null ? resp.getResultCount() : 0); ResultSet resultSet = null; try { // 获取该jobId对应的查询结果, 并返回结果迭代器。 resultSet = sqlJob.getResultSet(); handleResult(resultSet); } finally { if (resultSet != null) { resultSet.close(); } } }
  • 操作前准备 获取AK/SK,项目ID及对应的Region信息。 管理控制台。 单击界面右上角的登录用户名,在下拉列表中单击“我的凭证”。 在左侧导航栏中选择“访问密钥”,单击“新增访问密钥”。根据提示输入对应信息,单击“确定”。 在弹出的提示页面单击“立即下载”。下载成功后,打开凭证文件,获取AK/SK信息。 左侧导航栏单击“API凭证”,在“项目列表”中获取“项目ID”即为project_id值,对应的“项目”即为region的值。
  • 查询所有资源包 DLI提供查询资源列表接口,您可以使用该接口并选择相应的资源来执行作业。示例代码如下: 1 2 3 4 5 6 7 8 9 10 11 private static void listAllResources(DLIClient client) throws DLIException { System.out.println("list all resources..."); // 通过调用DLIClient对象的listAllResources方法查询队列资源列表 Resources resources = client.listAllResources(); for (PackageResource packageResource : resources.getPackageResources()) { System.out.println("Package resource name:" + packageResource.getResourceName()); } for (ModuleResource moduleResource : resources.getModuleResources()) { System.out.println("Module resource name:" + moduleResource.getModuleName()); } }
  • 查询指定资源包 您可以使用该接口查询指定的资源包信息,示例代码如下: private static void getResource(DLIClient client) throws DLIException { String resourceName = "xxxxx"; //group:资源包不在分组内,可不传入该参数 String group= "xxxxxx"; // 调用DLIClient对象的getResource方法查询指定资源包 PackageResource packageResource=client.getResource(resourceName,group); System.out.println(packageResource); }
  • 删除资源包 您可以使用该接口删除已上传的资源包,示例代码如下: private static void deleteResource(DLIClient client) throws DLIException { String resourceName = "xxxxx"; //group:资源包不在分组内,可不传入该参数 String group= "xxxxxx"; // 调用DLIClient对象的deleteResource方法删除资源 client.deleteResource(resourceName,group); System.out.println("---------- deleteResource success ---------"); }
  • 代码示例 - 初始化MpcClient Endpoint调用前请您根据实际情况填写,并替换如下变量:"SDK_AK"、"SDK_SK"、{your endpoint string}和{your project id}。 package com.huaweicloud.sdk.test; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.http.HttpConfig; import com.huaweicloud.sdk.mpc.v1.MpcClient; public class InitMpc { private static HttpConfig httpConfig; private static BasicCredentials auth; private static String endpoint; private static MpcClient mpcClient; public static MpcClient getMpcClient() { httpConfig = HttpConfig.getDefaultHttpConfig().withIgnoreSSLVerification(true).withTimeout(3); //http代理设置,请根据实际情况设置 //httpConfig.withProxyHost("xxxxx").withProxyPort(xxxxx).withProxyUsername("xxxxx"). // withProxyPassword("xxxxx"); String ak = System.getenv("SDK_AK"); String sk = System.getenv("SDK_SK"); String projectId = System.getenv("PROJECT_ID"); endpoint = "https://mpc.region01.myhuaweicloud.com"; auth = new BasicCredentials().withAk(ak).withSk(sk).withProjectId(projectId); mpcClient = MpcClient.newBuilder() .withHttpConfig(httpConfig) .withCredential(auth) .withEndpoint(endpoint) .build(); return mpcClient; } }
  • 初始化Client 初始化HotWordClient,其参数包括AuthInfo和SisConfig。 表1 AuthInfo 参数名称 是否必选 参数类型 描述 ak 是 String 用户的ak,可参考AK/SK认证。 sk 是 String 用户的sk,可参考AK/SK认证。 region 是 String 区域,如cn-north-4,参考终端节点。 projectId 是 String 项目ID,同region一一对应,参考获取项目ID。 endpoint 否 String 终端节点,参考地区和终端节点。 表2 SisConfig 参数名称 是否必选 参数类型 描述 connectionTimeout 否 Integer 连接超时,默认10000,单位ms。 readTimeout 否 Integer 读取超时,默认10000,单位ms。
  • 请求参数 请求类为HotWordRequest,详见表3。 表3 HotWordRequest 参数名称 是否必选 参数类型 描述 name 是 String 热词表名,创建时不可重复。内容限制为字母,数字,下中划线和井号,长度不超过32字节。 language 是 String 热词表语言类型,目前支持汉语普通话“chinese_mandarin”。 contents 是 Array of String 热词库,单词库支持热词数上限10000。中文单个热词长度上限32字节。 description 否 String 热词表描述,长度不超过255字节。
  • 功能说明 OBS客户端支持通过访问密钥、请求方法类型、请求参数等信息生成一个在Query参数中携带鉴权信息的URL,可将该URL提供给其他用户进行临时访问。在生成URL时,您需要指定URL的有效期来限制访客用户的访问时长。 如果您想授予其他用户对桶或对象临时进行其他操作的权限(例如上传或下载对象),则需要生成带对应请求的URL后(例如使用生成PUT请求的URL上传对象),将该URL提供给其他用户。 如果遇到跨域报错、签名不匹配问题,请参考以下步骤排查问题: 未配置跨域,需要在控制台配置CORS规则,请参考配置桶允许跨域请求。 签名计算问题,请参考URL中携带签名排查签名参数是否正确;比如上传对象功能,后端将Content-Type参与计算签名生成授权URL,但是前端使用授权URL时没有设置Content-Type字段或者传入错误的值,此时会出现跨域错误。解决方案为:Content-Type字段前后端保持一致。 不支持通过 CDN加速 后的域名生成临时访问URL。