Serverless Spark Batch节点

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包通过本地上传的方式上传为DataWorksEMR JAR资源

  1. 创建EMR JAR资源。

    1. 在左侧导航栏单击资源管理按钮image,进入资源管理页面。

    2. 资源管理页面,单击image按钮,选择新建资源 > EMR Jar,输入名称spark-examples_2.11-2.4.0.jar

    3. 单击点击上传按钮,上传spark-examples_2.11-2.4.0.jar

    4. 选择存储路径数据源资源组

      重要

      数据源需选择绑定的Serverless Spark集群。

    5. 单击保存按钮进行保存。

    image

  2. 引用EMR JAR资源。

    1. 打开创建的Serverless Spark Batch节点,停留在代码编辑页面。

    2. 在左侧导航栏的资源管理中找到待引用资源,右键选择引用资源

    3. 选择引用后,当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资源名称。

    4. 改写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节点仅支持使用YarnCluster提交作业。

方案二:直接引用OSS资源

当前节点可直接通过OSS REF的方式引用OSS资源,在运行EMR节点时,DataWorks会自动加载代码中的OSS资源至本地使用。该方式常用于“需要在EMR任务中运行JAR依赖”、“EMR任务需依赖脚本”等场景。

  1. 开发JAR资源:本文以SparkWorkOSS-1.0-SNAPSHOT-jar-with-dependencies.jar作演示。

  2. 上传JAR资源。

    1. 登录OSS管理控制台,单击所在地域左侧导航栏的Bucket列表

    2. 单击目标Bucket名称,进入文件管理页面。

    3. 单击新建目录,创建JAR资源的存放目录。

    4. 进入存放目录,将SparkWorkOSS-1.0-SNAPSHOT-jar-with-dependencies.jar文件上传至Bucket。

  3. 引用JAR资源。

    1. 已创建的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,即OSSBucket需要与EMR集群所在地域相同。

      • Bucket:OSS用于存储对象的容器,每一个Bucket有唯一的名称,登录OSS管理控制台,可查看当前登录账号下所有Bucket

      • object:存储在Bucket中的一个具体的对象(文件名称或路径)。

调试节点

  1. 调试配置选择配置计算资源资源组等。

    配置项

    说明

    计算资源

    选择已绑定的EMR Serverless Spark计算资源。若无可用计算资源,可在下拉框中选择新建计算资源

    资源组

    选择已绑定工作空间的资源组。

    脚本参数

    在配置节点内容时,通过${参数名}的方式定义变量,需要在脚本参数处配置参数名参数值信息,任务运行时会将它动态替换为真实的取值。详情请参见调度参数支持格式

    ServerlessSpark节点参数

    Spark程序运行参数,更多Spark属性参数配置请参见开源Spark属性参数

  2. 在节点编辑页面上方工具栏,单击运行任务。

    重要

    发布前,需将调试配置ServerlessSpark节点参数同步至调度配置ServerlessSpark节点参数处。

后续步骤

  • 节点调度:若项目目录下的节点需要周期性调度执行,您需要在节点右侧的调度配置中设置调度策略,配置相关的调度属性。

  • 节点发布:若任务需要发布至生产环境执行,请单击界面image图标唤起发布流程,通过该流程将任务发布至生产环境。项目目录下的节点只有在发布至生产环境后,才会进行周期性调度。

  • 任务运维:任务发布后,您可以在运维中心查看周期任务的运行情况。详情请参见运维中心入门

相关文档