全部产品
云市场
云游戏

作业管理

更新时间:2020-07-07 14:25:56

独享版Spark支持通过spark-submit脚本或者SparkSQL两种方式编写Scala、Python、Java类型的Spark作业,也支持为作业添加工作流实现周期性作业调度。

创建作业

Spark集群中以作业为单位,运行实际业务。

  1. 登录Data Lake Analytics管理控制台

  2. 在页面左上角,选择DLA所在地域。

  3. 单击左侧导航栏中的独享版 Spark > 数据工作台 > 作业管理

  4. 作业管理页面,单击创建作业

  5. 新建作业页面,按照页面提示进行参数配置。

    新建作业

    参数 说明
    作业名称 设置Spark作业的名称。
    作业描述 为便于管理,可以为作业添加有意义的描述。
    执行集群 设置作业运行的实际集群。
    最大重置次数 当作业运行失败时,设置重试的最大次数。
    作业类型 支持两种作业类型:SparkJob、SparkSQL。
    告警设置 设置当作业运行成功或者失败时,系统是否发出通知。
  6. 完成上述参数配置后,单击确定创建作业。

  7. 在编辑器中输入作业内容,本示例中输入作业内容/pi.py,单击保存

    输入作业内容

通过spark submit命令编写作业

基于DLA独享版Spark平台和运行环境的特点,Spark作业支持的命令行参数是官方spark submit的一个子集,不需要配置—master参数。

  • spark submit命令格式

    1. [Options] <app jar | python file | R file> [app arguments]
  • 参数

    Options (参数) 说明
    —class CLASS_NAME Your application’s main class (for Java / Scala apps).
    —jars JARS Comma-separated list of jars to include on the driver and executor classpaths.
    —py-files PY_FILES Comma-separated list of .zip, .egg, or .py files to place on the PYTHONPATH for Python apps.
    —files FILES Comma-separated list of files to be placed in the working directory of each executor. File paths of these files in executors can be accessed via SparkFiles.get(fileName).
    —driver-memory MEM Memory for driver (e.g. 1000M, 2G) (Default: 1024M).
    —driver-cores NUM Number of cores used by the driver, only in cluster mode (Default: 1).
    —executor-cores NUM Number of cores per executor. (Default: 1).
    —executor-memory MEM Memory per executor (e.g. 1000M, 2G) (Default: 1G).
    —num-executors NUM Number of executors to launch (Default: 2).
    —name NAME A name of your application.
    —conf PROP=VALUE Arbitrary Spark configuration property.
  • 示例

    以下是一个Java类型的Spark作业

    1. --class org.apache.spark.examples.SparkPi
    2. --driver-memory 2G
    3. --driver-cores 1
    4. --executor-memory 2G
    5. --executor-cores 2
    6. --num-executors 1
    7. --name pi
    8. /examples_2.11-2.3.2.jar
    9. 10000

通过SparkSQL编写作业

您可以在Spark作业中编写SparkSQL语句,进行数据表操作。

由于生产的周期调度SQL输出一般是Spark的表或者Cassandra、Hbase、Mongo、RDS等其他外表存储,因此Spark-SQL类型的作业不支持显示SQL结果。

  • 示例

    以下截图中spark_mysql_table是一张Spark关联的MySQL表,通过SparkSQL每天周期性将MySQL数据存储到Spark的数仓表spark_warehouse_table中,且每天的数据存储在不同的分区中。

    示例

设置作业参数

为方便调试、复用Spark作业以及周期调度Spark作业,可以在Spark作业中添加通用变量,通用变量的值可以手动设置或者根据作业调度时间自动生成。

手动设置作业参数

  1. 登录Data Lake Analytics管理控制台

  2. 在页面左上角,选择DLA所在地域。

  3. 单击左侧导航栏中的独享版 Spark > 数据工作台 > 作业管理

  4. 作业管理页面,单击待设置参数的作业,本示例为spark python pi example,然后单击作业设置

  5. 作业设置页面,单击自定义参数页签,然后单击增加

    作业设置

  6. 输入参数的NAME和VALUE,单击确定

    如果需要添加多个参数,可多次单击增加按钮添加参数。

    参数添加成功后,您就可以在作业配置中使用${pi_args}参数。

在Spark作业内容中设置日期时间参数

目前日期时间类型的参数只能在Spark作业内容中设置,支持以下格式的日期时间参数:

  • yyyyMMdd,获取当前日期,支持格式${yyyyMMdd}${yyyyMMdd+n}${yyyyMMdd-n}

  • yyyy-MM-dd,获取当前日期,支持格式${yyyy-MM-dd}${yyyy-MM-dd+n}${yyyy-MM-dd-n}

  • yyyy/MM/dd,获取当前日期,支持格式${yyyy/MM/dd}${yyyy/MM/dd+n}${yyyy/MM/dd-n}

  • timestamp,获取当前时间戳,支持格式${timestamp}${timestamp+n}${timestamp-n}

    n为正整数,+n为增加n天,-n为减少n天。

例如以下作业传入${yyyyMMdd+2}参数时,在实际运行时会被替换为当前日期20200628+2即20200630。

日期参数

运行作业

  1. 登录Data Lake Analytics管理控制台

  2. 在页面左上角,选择DLA所在地域。

  3. 单击左侧导航栏中的独享版 Spark > 数据工作台 > 作业管理

  4. 作业管理页面,单击待运行的作业,本示例为spark python pi example,然后单击运行

  5. 运行作业对话框中,设置执行作业的集群,然后单击确定运行作业。

    运行作业1 运行作业2

查看运行状态

独享版Spark服务支持通过YarnUI、SparkUI查看Spark任务的执行情况,使用YarnUI、SparkUI之前需要完成以下准备工作:

  1. 登录Data Lake Analytics管理控制台

  2. 在页面左上角,选择DLA所在地域。

  3. 单击左侧导航栏中的独享版 Spark > 数据工作台 > 作业管理

  4. 在作业运行列表中,您可以进行以下操作。

    • 刷新:单击刷新,实时刷新作业的运行结果列表。

    • 日志:单击日志查看作业的运行信息,当作业运行失败时,通过日志定位错误。

    • SparkUIYarnUI:单击SparkUI或者YarnUI,在SparkUI页面或者YarnUI页面查看作业详情。

      sparkui

    • 详情:单击详情查看作业提交时的命令行参数。

    • 停止:当作业在启动或运行过程中,可以单击停止停止作业启动或运行。