文档首页 > > 用户指南> 用户业务迁移指导> 业务迁移前的准备> 步骤五:适配代码

步骤五:适配代码

分享
更新时间: 2020/03/17 GMT+08:00

将CS服务业务迁移到DLI服务,涉及到API、SDK以及Flink版本的变化,需要进行相应的适配:

API

原有涉及CS API调用的业务,推荐替换为DLI流作业管理相关API(相URL对于原API增加了streaming)。具体接口信息可参考《数据湖探索API参考》。

SDK

原有基于CS SDK开发的业务,可替换为DLI SDK。DLI SDK使用可参考《数据湖探索SDK参考》。

组件版本

CS服务迁移到DLI服务后,Flink版本会从1.5.3版本升级到1.7.2版本。由于Flink 1.7.2版本与1.5.3版本绝大部分接口是兼容的,因此自定义jar作业只需要提前在DLI中验证可以正常运行即可。组件版本变化影响仅涉及Flink自定义jar作业,SQL作业无需修改。详细的Flink版本变化,可参考《Flink 1.7 Release Notes》。

由于Flink 1.7.2版本运⾏时移除了legacy mode,⾃定义作业配置参数项中的CUs和并⾏数设置不再能够控制作业占⽤资源数及算⼦并发数,其控制的是每个taskmanager能启动的slot数量,即“taskmanager.numberOfTaskSlots”参数。⽤户⾃定义作业需在代码中配置并发数(.setParallelism),Flink 运⾏时会根据算⼦总并发数及每个taskmanager启动的slots数来申请对应的资源量。Flink SQL作业不受 影响。

SQL Kafka安全认证

CS服务中,安全Kafka的SSL证书是通过集群管理中的“文件上传”实现的,而DLI提供“跨源认证”管理功能,可在“跨源连接” -> “跨源认证” -> “创建”中创建Kafka_SSL认证信息,管理安全kafka认证所需的证书密码等。使用时,Kafka属性中的“ssl.truststore.location”,“ssl.truststore.password”等参数替换为with配置项中的“kafka_certificate_name = "跨源名"”即可。

SQL字符转义

相对于CS服务,DLI服务中的转义字符本身无需再次转义。例如,以字符“^”为分隔符,CS服务中需要表达为:

string_to_array($field, '\\\\^')

而DLI服务中可简化为:

string_to_array($field, '\\^')

资源包管理

相对于CS服务,DLI服务提供了资源包管理能力。在创建自定义作业之前,需要先通过DLI“数据管理” -> “程序包管理” -> “创建”页面,将作业jar包、依赖包及配置文件等上传到DLI中,然后才能在作业中引用。

如果资源包有更新,可再次通过DLI“程序包管理”页面创建同名资源包,覆盖掉原有资源包。

提交作业时,DLI不直接引用用户OBS路径中的资源文件,因而用户在OBS中的资源文件更新时,需要同时在DLI服务“程序包管理”页面创建同名的资源包。

配置文件

在CS服务中,用户自定义作业可以通过集群管理中的“文件上传”功能上传到节点,并在代码中通过绝对路径“/opt/cs/user_files/fileName”引用。而在DLI服务中,配置文件可以通过作业中的“其他依赖”参数,指定DLI程序包管理中的资源包,并在代码中通过“ClassName.class.getClassLoader().getResource("userData/fileName")”引用。

自定义作业依赖

DLI服务运行环境中的Flink-1.7.2和Hadoop-3.1.1,对应于CS服务中的Flink-1.5.3和Hadoop-2.8.3,内置的依赖jar包版本存在变化。因而用户自定义作业自带的jar包可能与DLI服务运行环境中的内置jar包版本存在冲突。此时,用户自定义作业工程打包时,需要将DLI服务运行环境中已有的jar包排除,或者设置包依赖作用域为provided。

完整的DLI运行环境内置依赖包列表可参考《数据湖探索用户指南》。

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问