云服务器内容精选
-
查询作业状态 相关链接 查询作业状态 示例代码 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 DLI Exception { 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的值。