全部产品
Search
文档中心

云原生大数据计算服务 MaxCompute:创建ODPS Spark节点

更新时间:Jul 27, 2023

MaxCompute Spark作业可通过Local模式、Cluster模式执行,此外,您也可在DataWorks中运行MaxCompute Spark离线作业(Cluster模式),以便与其它类型执行节点集成和调度。本文为您介绍如何通过DataWorks实现MaxCompute Spark作业的配置与调度。

前提条件

  • 工作空间已绑定引擎:在工作空间配置页面绑定MaxCompute引擎后,数据开发(DataStudio)页面才会显示MaxCompute目录。详情请参见绑定MaxCompute引擎
  • 已创建业务流程:DataWorks使用业务流程存放创建的节点。因此,创建节点前需先创建业务流程。详情请参见创建业务流程

背景信息

MaxCompute Spark是MaxCompute提供的兼容开源Spark的计算服务。它在统一的计算资源和数据集权限体系之上,提供Spark计算框架,支持您以熟悉的开发使用方式提交运行Spark作业,满足更丰富的数据处理分析需求。在DataWorks中,您可通过ODPS Spark节点实现MaxCompute Spark任务的调度运行,以及与其他作业的集成操作。

MaxCompute Spark支持使用Java、Scala和Python语言进行开发,并通过Local、Cluster模式运行任务,在DataWorks中运行MaxCompute Spark离线作业时采用Cluster模式执行。更多关于MaxCompute Spark运行模式的介绍,详情请参见运行模式

开发MaxCompute Spark任务

ODPS Spark节点支持使用Java/ScalaPython语言运行MaxCompute Spark离线作业,不同语言开发步骤及配置界面存在差异,您可根据业务需要选择使用。

开发语言:Java/Scala

在ODPS Spark节点执行Java或Scala语言类型代码前,您需先在本地开发好MaxCompute Spark作业代码,再通过DataWorks上传为MaxCompute的资源。步骤如下:
  1. 准备开发环境。

    根据所使用系统类型,准备运行MaxCompute Spark任务的开发环境,详情请参见搭建Linux开发环境搭建Windows开发环境

  2. 开发Java/Scala代码。

    在ODPS Spark节点执行Java或Scala语言类型代码前,需先在本地或已有环境开发好MaxCompute Spark代码,建议使用MaxCompute Spark提供的项目示例工程模板进行开发。

  3. 打包代码并上传至DataWorks。

    代码开发完成后,需将其打包,并通过DataWorks上传为MaxCompute资源,详情请参见创建并使用MaxCompute资源

后续操作:MaxCompute Spark任务开发完成后,您需创建ODPS Spark节点并运行Spark任务

开发语言:Python(使用默认Python环境实现)

DataWorks可通过将代码在线写入DataWorks Python资源的方式,实现PySpark作业开发,并通过ODPS Spark节点提交运行该代码逻辑。DataWorks上创建Python资源,详情请参见创建并使用MaxCompute资源;PySpark开发示例,详情请参见PySpark开发示例
说明 该方式使用DataWorks提供的默认Python环境,可直接依赖的三方包有限,若默认环境无法满足PySpark作业第三方依赖包的需求,可参考下文《开发语言:Python(使用自定义Python环境实现)》方式,自行准备Python环境执行任务。当然,您也可选择对Python资源支持性更好的PyODPS 2节点PyODPS 3节点
后续操作:MaxCompute Spark任务开发完成后,您需创建ODPS Spark节点并运行Spark任务

开发语言:Python(使用自定义Python环境实现)

若平台提供的默认Python环境无法满足您的业务需求,则可根据如下步骤自定义Python环境,执行MaxCompute Spark任务。
  1. 本地准备Python环境。

    您可参考PySpark Python版本和依赖支持,根据业务需要配置可用的Python环境。

  2. 打包环境并上传至DataWorks。

    将Python环境压缩为一个Zip包,并通过DataWorks上传为MaxCompute资源,作为后续运行MaxCompute Spark任务的执行环境。详情请参见创建并使用MaxCompute资源

后续操作:MaxCompute Spark任务开发完成后,您需创建ODPS Spark节点并运行Spark任务

创建ODPS Spark节点并运行Spark任务

步骤一:进入ODPS Spark节点创建入口

  1. 进入数据开发页面。

    1. 登录DataWorks控制台

    2. 在左侧导航栏,单击工作空间列表

    3. 选择工作空间所在地域后,单击相应工作空间后的数据开发

  2. 进入节点创建入口。
    在数据开发页面基于具体业务流程创建节点,并根据界面指引配置节点的名称、路径等基本信息。创建入口及步骤如下图。创建节点入口

步骤二:配置ODPS Spark节点参数

DataWorks运行MaxCompute Spark离线作业采用Cluster模式,在Cluster模式中,您需指定自定义程序入口mainmain运行结束(即状态为SuccessFail)时,对应的Spark作业便会结束。此外,spark-defaults.conf中的配置需逐条加到ODPS Spark节点配置项中。例如,Executor的数量、内存大小和spark.hadoop.odps.runtime.end.point的配置。
说明 您无需上传spark-defaults.conf文件,而是需将spark-defaults.conf文件中的配置都逐条加到ODPS Spark节点的配置项中。
Spark任务配置
参数描述对应的spark-submit命令
spark版本

包括Spark1.xSpark2.xSpark3.x版本。

语言此处选择Java/ScalaPython。请根据实际MaxCompute Spark开发语言进行选择。
选择主资源指定任务所使用的主JAR资源文件或主Python资源。

此处的资源文件需提前上传至DataWorks并已提交,详情请参见创建并使用MaxCompute资源

app jar or Python file
配置项
指定提交作业时的配置项。其中:
  • spark.hadoop.odps.access.idspark.hadoop.odps.access.keyspark.hadoop.odps.end.point无需配置,默认为MaxCompute项目的值(有特殊原因可显式配置,将覆盖默认值)。
  • 您无需上传spark-defaults.conf文件,而是需将spark-defaults.conf中的配置逐条加到ODPS SPARK节点配置项中,例如Executor的数量、内存大小和spark.hadoop.odps.runtime.end.point的配置。
--conf PROP=VALUE
Main Class配置主类名称。当开发语言为Java/Scala时,需要配置该参数。--class CLASS_NAME
参数
您可根据需要添加参数,多个参数之间用空格分隔。DataWorks支持使用调度参数,此处参数配置格式为${变量名}。配置完成后需在右侧导航栏调度配置 > 参数处给变量赋值。
说明 调度参数支持的赋值格式请参见调度参数支持的格式
[app arguments]
选择其他资源
您可根据需要,选择使用如下资源。
  • jar资源:仅支持开发语言为Java/Scala时使用。
  • Python资源:仅支持开发语言为Python时使用。
  • file资源
  • archives资源:仅展示压缩类型的资源。
此处的资源文件需提前上传至DataWorks并已提交,详情请参见创建并使用MaxCompute资源
不同资源分别对应如下命令:
  • --jars JARS
  • --py-files PY_FILES
  • --files FILES
  • --archives ARCHIVES

步骤三:提交并发布节点

ODPS Spark节点需要发布生产环境后,才会自动调度运行。

  1. 在节点编辑页面,单击右侧的调度配置,配置节点的调度属性,详情请参见任务调度属性配置概述
  2. 保存并提交节点。
    重要 您需要设置节点的重跑属性依赖的上游节点,才可以提交节点。
    1. 单击工具栏中的保存图标,保存节点。
    2. 单击工具栏中的提交图标,在提交新版本对话框输入变更描述,单击确认,提交节点。
      节点提交后,将按照配置调度执行。
    如果您使用的是标准模式的工作空间,提交成功后,需单击右上方的发布,发布节点,具体操作请参见发布任务

最佳实践

更多场景的MaxCompute Spark任务开发,请参考:

后续步骤

  • 周期任务运维:任务提交发布至生产运维中心调度后,您可通过DataWorks运维中心进行相关运维操作。
  • Spark作业诊断:MaxCompute为Spark作业提供Logview工具以及Spark Web-UI,您可通过作业日志检查作业是否已正常提交并执行。