Spark是一个通用的大数据分析引擎,以其高性能、易用性和广泛的适用性而著称。它支持复杂的内存计算,非常适合构建大规模且低延迟的数据分析应用。DataWorks平台提供Serverless Spark Batch节点,使您能够在 DataWorks上基于EMR Serverless Spark 集群便捷地开发和周期性调度Spark任务。
适用范围
- 计算资源限制:仅支持绑定EMR Serverless Spark计算资源,需确保资源组和计算资源网络连通。 
- 资源组限制:仅支持使用Serverless资源组运行该类型任务。 
- (可选,RAM账号需要)进行任务开发的RAM账号已被添加至对应工作空间中,并具有开发或空间管理员(权限较大,谨慎添加)角色权限,添加成员的操作详情请参见为工作空间添加空间成员。 - 如果您使用的是主账号,则可忽略该添加操作。 
新建节点
新建入口参考:创建节点。
开发节点
开发Serverless Spark Batch任务前,需先在EMR中开发Spark任务代码并编译成JAR包。Spark开发指导,请参见Spark教程。
根据不同场景需求选择适合您的操作方案:
方案一:先上传资源后引用EMR JAR资源
DataWorks支持从本地先上传资源至Data Studio,再引用资源。Serverless Spark Batch任务编译完成后,需获取编译后的JAR包,建议根据JAR包大小选择不同方式存储JAR包资源。JAR包小于500MB时,可将JAR包通过本地上传的方式上传为DataWorks的EMR JAR资源。
- 创建EMR JAR资源。 - 在左侧导航栏单击资源管理按钮  ,进入资源管理页面。 ,进入资源管理页面。
- 在资源管理页面,单击  按钮,选择,输入名称spark-examples_2.11-2.4.0.jar。 按钮,选择,输入名称spark-examples_2.11-2.4.0.jar。
- 单击点击上传按钮,上传spark-examples_2.11-2.4.0.jar。 
- 选择存储路径、数据源及资源组。 重要- 数据源需选择绑定的Serverless Spark集群。 
- 单击保存按钮进行保存。 
  
- 引用EMR JAR资源。 - 打开创建的Serverless Spark Batch节点,停留在代码编辑页面。 
- 在左侧导航栏的资源管理中找到待引用资源,右键选择引用资源。 
- 选择引用后,当Serverless Spark Batch节点的代码编辑页面出现如下引用成功提示时,表明已成功引用代码资源。 - ##@resource_reference{"spark-examples_2.11-2.4.0.jar"} spark-examples_2.11-2.4.0.jar- 如果成功自动添加上述引用代码,表明资源引用成功。其中,spark-examples_2.11-2.4.0.jar为您实际上传的EMR JAR资源名称。 
- 改写Serverless Spark Batch节点代码,补充spark submit命令,改写后的示例如下。 重要- Serverless Spark Batch节点编辑代码时不支持注释语句,请务必参考如下示例改写任务代码,不要随意添加注释,否则后续运行节点时会报错。 
 - spark-submit方式提交的任务,deploy-mode推荐使用cluster模式,不建议使用client模式。 
 - ##@resource_reference{"spark-examples_2.11-2.4.0.jar"} spark-submit --class org.apache.spark.examples.SparkPi --master yarn spark-examples_2.11-2.4.0.jar 100- 命令 - 命令说明 - class- 实际编译的JAR包中的任务主Class,此处为 - org.apache.spark.examples.SparkPi。- master- Spark应用程序的运行模式,Spark节点仅支持使用Yarn的Cluster提交作业。 
 
方案二:直接引用OSS资源
当前节点可直接通过OSS REF的方式引用OSS资源,在运行EMR节点时,DataWorks会自动加载代码中的OSS资源至本地使用。该方式常用于“需要在EMR任务中运行JAR依赖”、“EMR任务需依赖脚本”等场景。
- 开发JAR资源:本文以SparkWorkOSS-1.0-SNAPSHOT-jar-with-dependencies.jar作演示。 
- 上传JAR资源。 - 登录OSS管理控制台,单击所在地域左侧导航栏的Bucket列表。 
- 单击目标Bucket名称,进入文件管理页面。 
- 单击新建目录,创建JAR资源的存放目录。 
- 进入存放目录,将 - SparkWorkOSS-1.0-SNAPSHOT-jar-with-dependencies.jar文件上传至Bucket。
 
- 引用JAR资源。 - 已创建的Serverless Spark Batch节点编辑页面,编辑引用JAR资源代码。 重要- 下面代码中,OSS Bucket名称为 - mybucket,目录为- emr,需替换成您实际的路径。- spark-submit --class com.aliyun.emr.example.spark.SparkMaxComputeDemo --master yarn ossref://mybucket/emr/SparkWorkOSS-1.0-SNAPSHOT-jar-with-dependencies.jar- 引用参数说明: - 参数 - 参数说明 - class- 运行的主类全名称。 - master- Spark应用程序的运行模式。 - ossref文件路径- 格式为 - ossref://{endpoint}/{bucket}/{object}- endpoint:OSS对外服务的访问域名。Endpoint为空时,仅支持使用与当前访问的EMR集群同地域的OSS,即OSS的Bucket需要与EMR集群所在地域相同。 
- Bucket:OSS用于存储对象的容器,每一个Bucket有唯一的名称,登录OSS管理控制台,可查看当前登录账号下所有Bucket。 
- object:存储在Bucket中的一个具体的对象(文件名称或路径)。 
 
 
调试节点
- 在调试配置选择配置计算资源、资源组等。 - 配置项 - 说明 - 计算资源 - 选择已绑定的EMR Serverless Spark计算资源。若无可用计算资源,可在下拉框中选择新建计算资源。 - 资源组 - 选择已绑定工作空间的资源组。 - 脚本参数 - 在配置节点内容时,通过 - ${参数名}的方式定义变量,需要在脚本参数处配置参数名、参数值信息,任务运行时会将它动态替换为真实的取值。详情请参见调度参数支持格式。- ServerlessSpark节点参数 - Spark程序运行参数,更多Spark属性参数配置请参见开源Spark属性参数。 
- 在节点编辑页面上方工具栏,单击运行任务。 重要- 发布前,需将调试配置的ServerlessSpark节点参数同步至调度配置的ServerlessSpark节点参数处。 
 图标唤起发布流程,通过该流程将任务发布至生产环境。项目目录下的节点只有在发布至生产环境后,才会进行周期性调度。
图标唤起发布流程,通过该流程将任务发布至生产环境。项目目录下的节点只有在发布至生产环境后,才会进行周期性调度。