目前MaxCompute Spark支持三种运行方式:Local模式、Cluster模式和DataWorks执行模式。

Local模式

Local模式主要用于用户调试应用代码。在Local模式下,MaxCompute Spark的使用方式与社区相同,还添加了用Tunnel读写MaxCompute表的功能。您可以在IDE和命令行中使用该模式,需要添加配置spark.master=local[N],其中N表示执行该模式所需的CPU资源。

Local模式下,读写表是通过读写Tunnel完成的,需要在Spark-defaults.conf中增加Tunnel配置项(请根据MaxCompute项目所在的Region及网络环境填写对应的Endpoint地址,详情请参见配置Endpoint)。该模式下命令行执行的方式如下。
# /path/to/MaxCompute-Spark为编译后的Application Jar包路径。
cd $SPARK_HOME
bin/spark-submit --master local[4] --class com.aliyun.odps.spark.examples.SparkPi \
/path/to/MaxCompute-Spark/spark-2.x/target/spark-examples_2.11-1.0.0-SNAPSHOT-shaded.jar

Cluster模式

在Cluster模式中,您需要指定自定义程序入口main。main结束(Success or Fail)时,对应的Spark作业就会结束。使用场景适合于离线作业,可与阿里云DataWorks产品结合进行作业调度,命令行提交方式如下。
# /path/to/MaxCompute-Spark为编译后的Application JAR包路径。
cd $SPARK_HOME
bin/spark-submit --master yarn-cluster --class com.aliyun.odps.spark.examples.SparkPi \
/path/to/MaxCompute-Spark/spark-2.x/target/spark-examples_2.11-1.0.0-SNAPSHOT-shaded.jar

DataWorks执行模式

您可以在DataWorks中运行MaxCompute Spark离线作业(Cluster模式),以方便与其它类型执行节点集成和调度。
说明 DataWorks的Spark节点目前已经支持的Region:华东1(杭州)、华北2(北京)、华东2(上海)、华南1(深圳)、中国(香港)、美国西部1(硅谷)、欧洲中部1(法兰克福)、亚太南部1(孟买)、亚太东南1(新加坡)。
操作步骤如下:
  1. 您需要在DataWorks的业务流程中上传并提交(单击提交按钮)资源。
    上传成功如下图所示。
  2. 在创建的业务流程中,从数据开发组件中选择ODPS Spark节点。
  3. 双击工作流中的Spark节点,对Spark作业进行任务定义。
    • spark版本:选择Spark的版本。
    • 语言:任务使用的开发语言。
    • 选择主jar资源:指定任务所使用的资源文件。此处的资源文件需要您提前上传至DataWorks上。
    • 配置项:指定提交作业时的配置项。

      其中spark.hadoop.odps.access.idspark.hadoop.odps.access.keyspark.hadoop.odps.end.point无需配置,默认为Maxcompute项目的值(有特殊原因可显式配置,将覆盖默认值)。

      除此之外,spark-default.conf中的配置需要逐条加到ODPS SPARK节点配置项中,例如Executor的数量、内存大小和spark.hadoop.odps.runtime.end.point的配置。

      ODPS SPARK节点的资源文件和配置项对应于spark-submit命令的参数和选项,如下表。此外,您也不需要上传spark-defaults.conf文件,而是将spark-defaults.conf文件中的配置都逐条加到ODPS SPARK节点配置项中。
      ODPS SPARK节点 spark-submit
      主Java、Python资源 app jar or python file
      配置项 --conf PROP=VALUE
      Main Class --class CLASS_NAME
      参数 [app arguments]
      选择JAR资源 --jars JARS
      选择Python资源 --py-files PY_FILES
      选择File资源 --files FILES
      选择Archives资源 --archives ARCHIVES
  4. 手动执行Spark节点,可以查看该任务的执行日志,从打印出来的日志中可以获取该任务的Logview和Jobview的URL,编译进一步查看与诊断。

    Spark作业定义完成后,即可在业务流程中对不同类型服务进行编排、统一调度执行。