通过DolphinScheduler提交Spark任务

DolphinScheduler是一款分布式、易扩展的可视化DAG工作流任务调度开源系统,能高效地执行和管理大数据流程。本文为您介绍如何通过DolphinScheduler Web界面轻松创建、编辑、调度Spark作业。

背景信息

当前,Apache DolphinScheduler的AliyunServerlessSpark Task Plugin已成功合并至开源主分支,将在后续的正式版本中发布。在此之前,您可以选择自行编译主分支代码,或通过cherry-pick相关的PR将该插件集成到您的项目中。

前提条件

  • 已安装JDK,且JDK的版本为1.8及以上版本。

  • 已安装Apache DolphinScheduler的AliyunServerlessSpark Task Plugin。

操作流程

步骤一:创建数据源

  1. 访问DolphinScheduler Web界面,在顶部导航栏单击源中心

  2. 单击创建源,选择源类型为ALIYUN_SERVERLESS_SPARK

  3. 在弹出的创建数据源对话框中配置如下参数。

    参数

    说明

    源名称

    数据源名称。

    Access Key Id

    阿里云账号的AccessKey ID。

    Access Key Secret

    阿里云账号的AccessKey Secret。

    Region Id

    EMR Serverless Spark工作空间所在地域。例如,cn-beijing。

    支持的地域信息,请参见支持地域

  4. 单击测试连接,测试成功后,单击确定

步骤二:创建项目

  1. 在顶部导航栏单击项目管理

  2. 单击创建项目

  3. 在弹出的创建项目对话框中配置项目名称所属用户等参数。详情请参见创建项目

步骤三:创建工作流

  1. 单击已创建的项目名称,进入工作流定义页面。

  2. 单击创建工作流,进入工作流DAG编辑页面。

  3. 在页面左侧选择ALIYUN_SERVERLESS_SPARK,并将其拖拽到右侧空白画布中。

  4. 在弹出的当前节点设置对话框中配置如下参数,单击确定

    不同的任务类型需要配置的参数也各不相同。

    提交JAR类型任务

    参数

    说明

    数据源类型

    选择ALIYUN_SERVERLESS_SPARK

    数据源实例

    选择在之前步骤中创建的数据源。

    workspace id

    EMR Serverless Spark的工作空间ID。

    resource queue id

    EMR Serverless Spark的资源队列ID。默认为root_queue

    code type

    任务类型,填写为JAR

    job name

    自定义EMR Serverless Spark的任务名称。例如,ds-emr-spark-jar。

    entry point

    文件位置。例如,oss://<yourBucketName>/spark-resource/examples/jars/spark-examples_2.12-3.3.1.jar

    entry point arguments

    传入Spark程序的参数,以#作为分隔符。

    spark submit parameters

    指定Spark提交时的参数。示例如下。

    --class org.apache.spark.examples.SparkPi --conf spark.executor.cores=4 --conf spark.executor.memory=20g --conf spark.driver.cores=4 --conf spark.driver.memory=8g --conf spark.executor.instances=1

    is production

    若为生产任务,开启该开关。

    engine release version

    引擎版本,默认为esr-2.1-native (Spark 3.3.1, Scala 2.12, Native Runtime)

    提交SQL类型任务

    参数

    说明

    数据源类型

    选择ALIYUN_SERVERLESS_SPARK

    数据源实例

    选择在之前步骤中创建的数据源。

    workspace id

    EMR Serverless Spark的工作空间ID。

    resource queue id

    EMR Serverless Spark的资源队列ID。默认为root_queue

    code type

    任务类型,填写为SQL

    job name

    自定义EMR Serverless Spark的任务名称。例如,ds-emr-spark-sql。

    entry point

    文件位置,需填写有效且非空的路径。

    entry point arguments

    传入Spark程序的参数,以#作为分隔符。示例如下:

    • 提交SQL脚本任务

      -e#show tables;show tables;
    • 提交OSS中的SQL脚本任务

      -f#oss://<yourBucketName>/spark-resource/examples/sql/show_db.sql

    spark submit parameters

    指定Spark提交时的参数。示例如下。

    --class org.apache.spark.sql.hive.thriftserver.SparkSQLCLIDriver --conf spark.executor.cores=4 --conf spark.executor.memory=20g --conf spark.driver.cores=4 --conf spark.driver.memory=8g --conf spark.executor.instances=1

    is production

    若为生产任务,开启该开关。

    engine release version

    引擎版本,默认为esr-2.1-native (Spark 3.3.1, Scala 2.12, Native Runtime)

    提交PySpark类型任务

    参数

    说明

    数据源类型

    选择ALIYUN_SERVERLESS_SPARK

    数据源实例

    选择在之前步骤中创建的数据源。

    workspace id

    EMR Serverless Spark的工作空间ID。

    resource queue id

    EMR Serverless Spark的资源队列ID。默认为root_queue

    code type

    任务类型,填写为PYTHON

    job name

    自定义EMR Serverless Spark的任务名称。例如,ds-emr-spark-jar。

    entry point

    文件位置。例如,oss://<yourBucketName>/spark-resource/examples/src/main/python/pi.py

    entry point arguments

    传入Spark程序的参数,以#作为分隔符。例如,本示例填写为1

    spark submit parameters

    指定Spark提交时的参数。示例如下。

    --conf spark.executor.cores=4 --conf spark.executor.memory=20g --conf spark.driver.cores=4 --conf spark.driver.memory=8g --conf spark.executor.instances=1

    is production

    若为生产任务,开启该开关。

    engine release version

    引擎版本,默认为esr-2.1-native (Spark 3.3.1, Scala 2.12, Native Runtime)

相关文档

DolphinScheduler官方文档,请参见Apache DolphinScheduler