快速玩转DLI SDK

网友投稿 587 2022-05-30

数据湖探索软件开发工具包(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);

快速玩转DLI SDK

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)。

数据湖探索 DLI

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:华为云云原生钻石集训营 第六课:Kubernetes网络架构原理深度剖析(上)
下一篇:React中级面试题
相关文章