快速玩转DLI SDK
数据湖探索软件开发工具包(Data Lake Insight Software Development Kit,简称DLI SDK)对DLI提供的REST API进行封装,客户能够通过SDK快速简便的开发自己的应用,省去了自行封装API的麻烦,很大程度上提高了用户开发效率和减少了开发难度,用户能够使用简单的调用实现一整套业务逻辑,接下来介绍一下如何快速玩转DLI JAVA SDK。
环境准备:1.JAVA开发运行环境JDK,从Oracle官网下载并安装JDK,配置好JAVA环境变量,推荐1.8版本;2.操作系统可选linux或者windows;3.开发工具可使用IDEA或者Eclipse.下面主要介绍使用IDEA工具进行SDK开发。
IDEA先建一个JAVA工程,需要导入DLI SDK依赖包,DLI依赖包在官网(https://uquery-sdk.obs-website.cn-north-1.myhwclouds.com)可以下载,把上述下载的依赖包解压之后获取huaweicloud-dli-sdk-java-{版本号}-jar-with-dependencies.jar包通过IDEA菜单依次点击File -> Project Structure->Modules->Dependencies进行导入,成功导入之后,我们就可以着手写第一个DLI SDK DEMO了。
DLI SDK有两种认证方式:1.通过AKSK方式,AKSK可以在华为云console页面我的凭证>访问秘钥中获取 2.使用token认证,需要填写用户的账号名(domain name),用户名(user name)和密码,相关信息在我的凭证>API凭证中获取。认证信息初始化分别可以使用以下代码:
//AKSK认证 DLIInfo info = new DLIInfo(regionName, ak, sk, projectId); DLIClient dliClient = new DLIClient(AuthenticationMode.AKSK, info); //TOKEN认证 DLIInfo info = new DLIInfo(regionName, doaminName, userName, password, projectId); DLIClient dliClient = new DLIClient(AuthenticationMode.TOKEN, info);
认证流程过后,我们可以调用相关接口去获取当前一些表的信息,比如客户想获取某个db1下的某张表tb1元数据信息,就可以通过如下实现方式:
public static void main( String[] args ) throws DLIException
{
DLIInfo info = new DLIInfo(regionName, ak, sk, projectId);
DLIClient dliClient = new DLIClient(AuthenticationMode.TOKEN, info);
TableSchema tableInfo = dliClient.getDatabase(db1).getTable(tb1).getTableDetail();
tableInfo.getColumn().forEach( column -> {
System.out.println("列名为:" + column.getColumnName());
System.out.println("列类型为" + column.getType());
});
}
通过tableSchema,我们能够拿到表的列表和类型,也可以获取到分区列和列描述信息等。
大部分客户通过DLI SDK进行提交作业完成业务对接,对于DDL相关作业,我们可以通过SDK直接提交并同步获取作业结果,比如我们如果要实现truncate table逻辑,我们就可以初始化一个DLI JOB,进行SQL作业同步提交,等待执行结果。对于一些异步作业,比如upload接口,需要处理的时间较长,我们需要循环判断作业运行是否完毕,代码如下所示。
// 同步作业提交(truncate table) String truncateSql = "truncate table " + table; SQLJob sqlJob = new SQLJob(dliClient.getQueue(queueName), database, truncateSql); sqlJob.submit(); if (sqlJob.getStatus().equals(JobStatus.FINISHED)) { System.out.println(“作业执行成功”} } //异步作业提交(数据通过upload接口导入DLI) UploadJob uploadJob = new UploadJob(dliClient.getQueue(queueName), database, table); Writer writer = uploadJob.createWriter(); Row row = uploadJob.newRow(); // 设置数据 row.setInt(0, 1); row.setString(1,”test”); writer.write(row); writer.flush(); uploadJob.beginCommit(); // 等待作业结束 while (!(uploadJob.getCommitStatus().getName().equalsIgnoreCase(JobStatus.FAILED.getName()) || uploadJob.getCommitStatus().getName().equalsIgnoreCase(JobStatus.FINISHED.getName()))) { sleep(1000); } writer.close();
如果想进一步了解DLI SDK的更多的使用方法,可以继续浏览官方指导文档(https://support.huaweicloud.com/sdkreference-dli/dli_04_0008.html)。
- 点赞
- 收藏
- 关注作者
评论(0)