云社区 博客 博客详情
云社区 博客 博客详情

快速玩转DLI SDK

cwk 发表于 2020-08-10 22:54:00 08-10 22:54
cwk 发表于 2020-08-10 22:54:00 2020/08/10
0
1

【摘要】 数据湖探索软件开发工具包(Data Lake Insight Software Development Kit,简称DLI SDK)对DLI提供的REST API进行封装,客户能够通过SDK快速简便的开发自己的应用,省去了自行封装API的麻烦,很大程度上提高了用户开发效率和减少了开发难度,用户能够使用简单的调用实现一整套业务逻辑,接下来介绍一下如何快速玩转DLI JAVA 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)。

 

登录后可下载附件,请登录或者注册

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:huaweicloud.bbs@huawei.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
评论文章 //点赞 收藏 1
点赞
分享文章到微博
分享文章到朋友圈

评论 (0)


0/1000
评论

登录后可评论,请 登录注册

评论

您还没有评论的权限!

温馨提示

您确认删除评论吗?

确定
取消
温馨提示

您确认删除评论吗?

删除操作无法恢复,请谨慎操作。

确定
取消
温馨提示

您确认删除博客吗?

确定
取消

确认删除

您确认删除博客吗?

确认删除

您确认删除评论吗?

温馨提示

登录超时或用户已下线,请重新登录!!!

确定
取消