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。
选择存储路径、数据源及资源组。
重要数据源需选择绑定的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。masterSpark应用程序的运行模式,Spark节点仅支持使用Yarn的Cluster提交作业。
方案二:直接引用OSS资源
当前节点可直接通过引用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 oss://mybucket/emr/SparkWorkOSS-1.0-SNAPSHOT-jar-with-dependencies.jar引用参数说明:
参数
参数说明
class运行的主类全名称。
masterSpark应用程序的运行模式。
oss文件路径格式为
oss://{bucket}/{object}Bucket:OSS用于存储对象的容器,每一个Bucket有唯一的名称,登录OSS管理控制台,可查看当前登录账号下所有Bucket。
object:存储在Bucket中的一个具体的对象(文件名称或路径)。
调试节点
在调试配置选择配置计算资源、资源组等。
配置项
说明
计算资源
选择已绑定的EMR Serverless Spark计算资源。若无可用计算资源,可在下拉框中选择新建计算资源。
资源组
选择已绑定工作空间的资源组。
脚本参数
在配置节点内容时,通过
${参数名}的方式定义变量,需要在脚本参数处配置参数名、参数值信息,任务运行时会将它动态替换为真实的取值。详情请参见调度参数支持格式。ServerlessSpark节点参数
Spark程序运行参数,更多Spark属性参数配置请参见开源Spark属性参数。
在节点编辑页面上方工具栏,单击运行任务。
重要发布前,需将调试配置的ServerlessSpark节点参数同步至调度配置的ServerlessSpark节点参数处。
图标唤起发布流程,通过该流程将任务发布至生产环境。项目目录下的节点只有在发布至生产环境后,才会进行周期性调度。