MaxCompute Spark开发指南

article/2025/10/9 2:19:12

0. 概述

本文档面向需要使用MaxCompute Spark进行开发的用户使用。本指南主要适用于具备有Spark开发经验的开发人员。

MaxCompute Spark是MaxCompute提供的兼容开源的Spark计算服务,它在统一的计算资源和数据集权限体系之上,提供Spark计算框架,支持用户以熟悉的开发使用方式提交运行Spark作业,以满足更丰富的数据处理分析场景。

本文将重点介绍MaxCompute Spark能够支撑的应用场景,同时说明开发的依赖条件和环境准备,重点对Spark作业开发、提交到MaxCompute集群执行、诊断进行介绍。

1. 前提条件

MaxCompute Spark是阿里云提供的Spark on MaxCompute的解决方案,能够让Spark应用运行在托管的MaxCompute计算环境中。为了能够在MaxCompute环境中安全地运行Spark作业,MaxCompute提供了以下SDK和MaxCompute Spark定制发布包。

SDK定位于开源应用接入MaxCompute SDK:
提供了集成所需的API说明以及相关功能Demo,用户可以基于项目提供的Spark-1.x以及Spark-2.x的example项目构建自己的应用,并且提交到MaxCompute集群上。
MaxCompute Spark客户端发布包:
集成了MaxCompute认证功功能,作为客户端工具,用于通过Spark-submit方式提交作业到MaxCompute项目中运行,目前提供了面向Spark1.x和Spark2.x的2个发布包:spark-1.6.3和spark-2.3.0 SDK在开发时,可以通过配置Maven依赖进行引用。Spark客户端需要根据开发的Spark版本,提前下载。如,需要开发Spark1.x应用,应下载spark-1.6.3版本客户端;如需开发Spark2.x应用,应下载spark-2.3.0客户端。

2. 开发环境准备

2.1 Maxcompute Spark客户端准备

MaxCompute Spark发布包:集成了MaxCompute认证功功能,作为客户端工具,用于通过Spark-submit方式提交作业到MaxCompute项目中运行,目前提供了面向Spark1.x和Spark2.x的2个发布包:

  • spark-1.6.3
  • spark-2.3.0

请根据需要开发的Spark版本,选择合适的版本下载并解压Maxcompute Spark发布包。

2.2 设置环境变量

JAVA_HOME设置

# 尽量使用JDK 1.7+ 1.8+ 最佳
export JAVA_HOME=/path/to/jdk
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

SPARK_HOME设置

export SPARK_HOME=/path/to/spark_extracted_package
export PATH=$SPARK_HOME/bin:$PATH

2.3 设置Spark-defaults.conf

在 $SPARK_HOME/conf 
路径下存在spark-defaults.conf.template文件,这个可以作为spark-defaults.conf的模版,需要在该文件中设置MaxCompute相关的账号信息后,才可以提交Spark任务到MaxCompute。默认配置内容如下,将空白部分根据实际的账号信息填上即可,其余的配置可以保持不变。

# MaxCompute账号信息
spark.hadoop.odps.project.name =
spark.hadoop.odps.access.id =
spark.hadoop.odps.access.key =
# 以下配置保持不变
spark.sql.catalogImplementation=odps
spark.hadoop.odps.task.major.version = cupid_v2
spark.hadoop.odps.cupid.container.image.enable = true
spark.hadoop.odps.cupid.container.vm.engine.type = hyper
spark.hadoop.odps.end.point = http://service.cn.maxcompute.aliyun.com/api
spark.hadoop.odps.runtime.end.point = http://service.cn.maxcompute.aliyun-inc.com/api

3. 访问MaxCompute表所需依赖

若作业需要访问MaxCompute表,需要依赖odps-spark-datasource模块,本节介绍如何把该依赖编译安装到本地maven仓库;若无需访问可直接跳过。

  • git clone代码,github地址: https://github.com/aliyun/aliyun-cupid-sdk/tree/3.3.2-public

 #git clone git@github.com:aliyun/aliyun-cupid-sdk.git

  1. 编译模块

#cd ${path to aliyun-cupid-sdk}
#git checkout 3.3.2-public
// 编译并安装cupid-sdk
#cd ${path to aliyun-cupid-sdk}/core/cupid-sdk/
#mvn clean install -DskipTests
// 编译并安装datasource。依赖cupid-sdk
// for spark-2.x
# cd ${path to aliyun-cupid-sdk}/spark/spark-2.x/datasource
# mvn clean install -DskipTests
// for spark-1.x
# cd ${path to aliyun-cupid-sdk}/spark/spark-1.x/datasource
#mvn clean install -DskipTests

  • 添加依赖

<!-- Spark-1.x请依赖此模块 -->
<dependency>
<groupId>com.aliyun.odps</groupId>
<artifactId>odps-spark-datasource_2.10</artifactId>
<version>3.3.2-public</version>
</dependency>
<!-- Spark-2.x请依赖此模块 -->
<dependency>
  <groupId>com.aliyun.odps</groupId>
  <artifactId>odps-spark-datasource_2.11</artifactId>
  <version>3.3.2-public</version>
</dependency>

 4. OSS依赖

若作业需要访问OSS,直接添加以下依赖即可

 <dependency>
    <groupId>com.aliyun.odps</groupId>
    <artifactId>hadoop-fs-oss</artifactId>
    <version>3.3.2-public</version>
</dependency>

 5. 应用开发

MaxCompute产品提供了两个应用构建的模版,用户可以基于此模版进行开发,最后统一构建整个项目后用生成的应用包即可直接提交到MaxCompute集群上运行Spark应用。

5.1 通过模版构建应用

MaxCompute Spark提供两个应用构建模版,用户可以基于此模版进行开发,最后统一构建整个项目后用生成的应用包即可直接提交到MaxCompute集群上运行Spark应用。首先需要把代码clone下来

 #git clone git@github.com:aliyun/aliyun-cupid-sdk.git
#cd aliyun-cupid-sdk
#checkout 3.3.2-public
#cd archetypes
// for Spark-1.x
sh Create-AliSpark-1.x-APP.sh spark-1.x-demo /tmp
// for Spark-2.x
Create-AliSpark-2.x-APP.sh spark-2.x-demo /tmp

以上命令会在/tmp目录下创建名为 spark-1.x-demo(spark-2.x-demo)的maven project,执行以下命令进行编译和提交作业:

 #cd /tmp/spark-2.x/demo
#mvn clean package
// 提交作业
$SPARK_HOME/bin/spark-submit \
--master yarn-cluster \
--class SparkPi \
/tmp/spark-2.x-demo/target/AliSpark-2.x-quickstart-1.0-SNAPSHOT-shaded.jar

 # Usage: sh Create-AliSpark-2.x-APP.sh <app_name> <target_path>
sh Create-AliSpark-2.x-APP.sh spark-2.x-demo /tmp/
cd /tmp/spark-2.x-demo
mvn clean package
# 冒烟测试 
# 1 利用编译出来的shaded jar包
# 2 按照文档所示下载MaxCompute Spark客户端
# 3 参考文档”置环境变量”指引,填写MaxCompute项目相关配置项
# 执行spark-submit命令 如下
$SPARK_HOME/bin/spark-submit \
        --master yarn-cluster \
        --class SparkPi \
      /tmp/spark-2.x-demo/target/AliSpark-2.x-quickstart-1.0-SNAPSHOT-shaded.jar

5.2 Java/Scala开发样例

Spark-1.x

pom.xml 须知
请注意 用户构建Spark应用的时候,由于是用MaxCompute提供的Spark客户端去提交应用,故需要注意一些依赖scope的定义

  • spark-core spark-sql等所有spark社区发布的包,用provided scope
  • odps-spark-datasource 用默认的compile scope

<!-- spark相关依赖, provided -->
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-mllib_${scala.binary.version}</artifactId>
    <version>${spark.version}</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_${scala.binary.version}</artifactId>
    <version>${spark.version}</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_${scala.binary.version}</artifactId>
    <version>${spark.version}</version>
    <scope>provided</scope>
</dependency>
<!-- datasource依赖, 用于访问MaxCompute表 -->
<dependency>
    <groupId>com.aliyun.odps</groupId>
    <artifactId>odps-spark-datasource_${scala.binary.version}</artifactId>
    <version>3.3.2-public</version>
</dependency>

 案例说明

WordCount

详细代码
提交方式

Step 1. build aliyun-cupid-sdk
Step 2. properly set spark.defaults.conf
Step 3. bin/spark-submit --master yarn-cluster --class \
      com.aliyun.odps.spark.examples.WordCount \
      ${path to aliyun-cupid-sdk}/spark/spark-1.x/spark-examples/target/spark-examples_2.10-version-shaded.jar

Spark-SQL on MaxCompute Table

详细代码
提交方式

# 运行可能会报Table Not Found的异常,因为用户的MaxCompute Project中没有代码中指定的表
# 可以参考代码中的各种接口,实现对应Table的SparkSQL应用
Step 1. build aliyun-cupid-sdk
Step 2. properly set spark.defaults.conf
Step 3. bin/spark-submit --master yarn-cluster --class \
      com.aliyun.odps.spark.examples.sparksql.SparkSQL \
      ${path to aliyun-cupid-sdk}/spark/spark-1.x/spark-examples/target/spark-examples_2.10-version-shaded.jar

GraphX PageRank

详细代码
提交方式

Step 1. build aliyun-cupid-sdk
Step 2. properly set spark.defaults.conf
Step 3. bin/spark-submit --master yarn-cluster --class \
      com.aliyun.odps.spark.examples.graphx.PageRank \
      ${path to aliyun-cupid-sdk}/spark/spark-1.x/spark-examples/target/spark-examples_2.10-version-shaded.jar

Mllib Kmeans-ON-OSS

详细代码
提交方式

# 代码中的OSS账号信息相关需要填上,再编译提交
conf.set("spark.hadoop.fs.oss.accessKeyId", "***")
conf.set("spark.hadoop.fs.oss.accessKeySecret", "***")
conf.set("spark.hadoop.fs.oss.endpoint", "oss-cn-hangzhou-zmf.aliyuncs.com")
Step 1. build aliyun-cupid-sdk
Step 2. properly set spark.defaults.conf
Step 3. bin/spark-submit --master yarn-cluster --class \
      com.aliyun.odps.spark.examples.mllib.KmeansModelSaveToOss \
      ${path to aliyun-cupid-sdk}/spark/spark-1.x/spark-examples/target/spark-examples_2.10-version-shaded.jar

OSS UnstructuredData

详细代码
提交方式

# 代码中的OSS账号信息相关需要填上,再编译提交
conf.set("spark.hadoop.fs.oss.accessKeyId", "***")
conf.set("spark.hadoop.fs.oss.accessKeySecret", "***")
conf.set("spark.hadoop.fs.oss.endpoint", "oss-cn-hangzhou-zmf.aliyuncs.com")
Step 1. build aliyun-cupid-sdk
Step 2. properly set spark.defaults.conf
Step 3. bin/spark-submit --master yarn-cluster --class \
      com.aliyun.odps.spark.examples.oss.SparkUnstructuredDataCompute \
      ${path to aliyun-cupid-sdk}/spark/spark-1.x/spark-examples/target/spark-examples_2.10-version-shaded.jar

Spark-2.x

pom.xml 须知
请注意 用户构建Spark应用的时候,由于是用MaxCompute提供的Spark客户端去提交应用,故需要注意一些依赖scope的定义

  • spark-core spark-sql等所有spark社区发布的包,用provided scope
  • odps-spark-datasource 用默认的compile scope

<!-- spark相关依赖, provided -->
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-mllib_${scala.binary.version}</artifactId>
    <version>${spark.version}</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_${scala.binary.version}</artifactId>
    <version>${spark.version}</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_${scala.binary.version}</artifactId>
    <version>${spark.version}</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>com.aliyun.odps</groupId>
    <artifactId>cupid-sdk</artifactId>
    <scope>provided</scope>
</dependency>

<!-- datasource依赖, 用于访问MaxCompute表 -->
<dependency>
    <groupId>com.aliyun.odps</groupId>
    <artifactId>odps-spark-datasource_${scala.binary.version}</artifactId>
    <version>3.3.2-public</version>
</dependency>

案例说明

WordCount

详细代码
提交方式

Step 1. build aliyun-cupid-sdk
Step 2. properly set spark.defaults.conf
Step 3. bin/spark-submit --master yarn-cluster --class \
      com.aliyun.odps.spark.examples.WordCount \
      ${path to aliyun-cupid-sdk}/spark/spark-2.x/spark-examples/target/spark-examples_2.11-version-shaded.jar

Spark-SQL 操作MaxCompute表

详细代码
提交方式

# 运行可能会报Table Not Found的异常,因为用户的MaxCompute Project中没有代码中指定的表
# 可以参考代码中的各种接口,实现对应Table的SparkSQL应用
Step 1. build aliyun-cupid-sdk
Step 2. properly set spark.defaults.conf
Step 3. bin/spark-submit --master yarn-cluster --class \
      com.aliyun.odps.spark.examples.sparksql.SparkSQL \
      ${path to aliyun-cupid-sdk}/spark/spark-2.x/spark-examples/target/spark-examples_2.11-version-shaded.jar

GraphX PageRank

详细代码
提交方式

Step 1. build aliyun-cupid-sdk
Step 2. properly set spark.defaults.conf
Step 3. bin/spark-submit --master yarn-cluster --class \
      com.aliyun.odps.spark.examples.graphx.PageRank \
      ${path to aliyun-cupid-sdk}/spark/spark-2.x/spark-examples/target/spark-examples_2.11-version-shaded.jar

Mllib Kmeans-ON-OSS

KmeansModelSaveToOss
详细代码
提交方式

# 代码中的OSS账号信息相关需要填上,再编译提交
val spark = SparkSession
      .builder()
      .config("spark.hadoop.fs.oss.accessKeyId", "***")
      .config("spark.hadoop.fs.oss.accessKeySecret", "***")
      .config("spark.hadoop.fs.oss.endpoint", "oss-cn-hangzhou-zmf.aliyuncs.com")
      .appName("KmeansModelSaveToOss")
      .getOrCreate()
Step 1. build aliyun-cupid-sdk
Step 2. properly set spark.defaults.conf
Step 3. bin/spark-submit --master yarn-cluster --class \
      com.aliyun.odps.spark.examples.mllib.KmeansModelSaveToOss \
      ${path to aliyun-cupid-sdk}/spark/spark-2.x/spark-examples/target/spark-examples_2.11-version-shaded.jar

OSS UnstructuredData

SparkUnstructuredDataCompute
详细代码
提交方式

# 代码中的OSS账号信息相关需要填上,再编译提交
val spark = SparkSession
      .builder()
      .config("spark.hadoop.fs.oss.accessKeyId", "***")
      .config("spark.hadoop.fs.oss.accessKeySecret", "***")
      .config("spark.hadoop.fs.oss.endpoint", "oss-cn-hangzhou-zmf.aliyuncs.com")
      .appName("SparkUnstructuredDataCompute")
      .getOrCreate()
Step 1. build aliyun-cupid-sdk
Step 2. properly set spark.defaults.conf
Step 3. bin/spark-submit --master yarn-cluster --class \
      com.aliyun.odps.spark.examples.oss.SparkUnstructuredDataCompute \
      ${path to aliyun-cupid-sdk}/spark/spark-2.x/spark-examples/target/spark-examples_2.11-version-shaded.jar

PySpark开发样例

需要文件
若需要访问MaxCompute表,则需要参考第三节(访问MaxCompute表所需依赖)编译datasource包

SparkSQL应用示例(spark1.6)

from pyspark import SparkContext, SparkConf
from pyspark.sql import OdpsContext
if __name__ == '__main__':
    conf = SparkConf().setAppName("odps_pyspark")
    sc = SparkContext(conf=conf)
    sql_context = OdpsContext(sc)
    df = sql_context.sql("select id, value from cupid_wordcount")
    df.printSchema()
    df.show(200)
    df_2 = sql_context.sql("select id, value from cupid_partition_table1 where pt1 = 'part1'")
    df_2.show(200)
    #Create Drop Table
    sql_context.sql("create table TestCtas as select * from cupid_wordcount").show()
    sql_context.sql("drop table TestCtas").show()

提交运行:

./bin/spark-submit \
--jars ${path to odps-spark-datasource_2.10-3.3.2-public.jar} \
example.py

SparkSQL应用示例(spark2.3)

from pyspark.sql import SparkSession

if __name__ == '__main__':
    spark = SparkSession.builder.appName("spark sql").getOrCreate()

    df = spark.sql("select id, value from cupid_wordcount")
    df.printSchema()
    df.show(10, 200)
    df_2 = spark.sql("SELECT product,category,revenue FROM (SELECT product,category,revenue, dense_rank() OVER (PARTITION BY category ORDER BY revenue DESC) as rank  FROM productRevenue) tmp WHERE  rank <= 2");
    df_2.printSchema()
    df_2.show(10, 200)
    df_3 = spark.sql("select id, value from cupid_partition_table1 where pt1 = 'part1'")
    df_3.show(10, 200)
    #Create Drop Table
    spark.sql("create table TestCtas as select * from cupid_wordcount").show()
    spark.sql("drop table TestCtas").show()

提交运行:

spark-submit --master yarn-cluster \
--jars ${path to odps-spark-datasource_2.11-3.3.2-public.jar \
example.py

6. 通过Spark访问VPC环境内服务

对于用户使用Spark on MaxCompute对VPC环境内的RDS、Redis、ECS主机部署的服务等,受限于VPC的访问限制,暂时还无法访问,即将在近期支持。

7. 如何把开源Spark代码迁移到Spark on MaxCompute

case1. 作业无需访问MaxCompute表和OSS
用户jar包可直接运行,参照第二节准备开发环境和修改配置。注意,对于spark或hadoop的依赖必须设成provided。
case2. 作业需要访问MaxCompute
参考第三节编译datasource并安装到本地maven仓库,在pom中添加依赖后重新打包即可。
case3. 作业需要访问OSS
参考第四节在pom中添加依赖后重新打包即可。

8. 任务提交执行

目前MaxCompute Spark支持以下几种运行方式:local模式,cluster模式,和在DataWorks中执行模式。

8.1 Local模式

local模式主要是让用户能够方便的调试应用代码,使用方式跟社区相同,我们添加了用tunnel读写ODPS表的功能。用户可以在ide和命令行中使用该模式,需要添加配置spark.master=local[N],其中N表示执行该模式所需要的cpu资源。此外,local模式下的读写表是通过读写tunnel完成的,需要在Spark-defaults.conf中增加tunnel配置项(请根据MaxCompute项目所在的region及网络环境填写对应的Tunnel Endpoint地址):tunnel_end_point=http://dt.cn-beijing.maxcompute.aliyun.com。命令行执行该模式的方式如下:

1.bin/spark-submit --master local[4] \
--class com.aliyun.odps.spark.examples.SparkPi \
${path to aliyun-cupid-sdk}/spark/spark-2.x/spark-examples/target/spark-examples_2.11-version-shaded.jar

8.2 Cluster模式

在Cluster模式中,用户需要指定自定义程序入口Main,Main结束(Success or Fail)spark job就会结束。使用场景适合于离线作业,可以与阿里云DataWorks产品结合进行作业调度。命令行提交方式如下:

1.bin/spark-submit --master yarn-cluster \
–class SparkPi \
${ProjectRoot}/spark/spark-2.x/spark-examples/target/spark-examples_2.11-version-shaded.jar

8.3 DataWorks执行模式

用户可以在DataWorks中运行MaxCompute Spark离线作业(cluster模式),以方便与其他类型执行节点集成和调度。

用户需要在DataWorks的业务流程中上传并提交(记得要单击"提交"按钮)资源:

 

第二步:在创建的业务流程中,从数据开发组件中选择ODPS Spark节点。


双击拖拽到工作流的Spark节点,对Spark作业进行任务定义: 

选择Spark的版本、任务使用的开发语言,并指定任务所使用的资源文件。这里的资源文件就是第一步在业务流程中预先上传并发布的资源文件。同时,您还可以指定提交作业时的配置项,如executor的数量、内存大小等配置项。

同时设置配置项:spark.hadoop.odps.cupid.webproxy.endpoint(取值填写项目所在region的endpoint,如http://service.cn.maxcompute.aliyun-inc.com/api)、spark.hadoop.odps.moye.trackurl.host(取值填写:http://jobview.odps.aliyun.com)

以便能够查看日志中打印出的jobview信息。
手动执行Spark节点,可以查看该任务的执行日志,从打印出来的日志中可以获取该任务的logview和jobview的url,编译进一步查看与诊断

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

9. 作业诊断

提交作业后,需要根据作业日志来检查作业是否正常提交并执行,MaxCompute对于Spark作业提供了Logview工具以及Spark Web-UI来帮助开发者进行作业诊断。

例如,通过Spark-submit方式(dataworks执行spark任务时也会产生相应日志)提交作业,在作业日志中会打印以下关键内容:

cd $SPARK_HOME

bin/spark-submit --master yarn-cluster --class  SparkPi /tmp/spark-2.x-demo/target/AliSpark-2.x-quickstart-1.0-SNAPSHOT-shaded.jar
作业提交成功后,MaxCompute会创建一个instance,在日志中会打印instance的logview:
19/01/05 20:36:47 INFO YarnClientImplUtil: logview url: http://logview.odps.aliyun.com/logview/?h=http://service.cn.maxcompute.aliyun.com/api&p=qn_beijing&i=20190105123647703gpqn26pr2&token=eG94TG1iTkZDSFErc1ZPcUZyTTdSWWQ3UE44PSxPRFBTX09CTzoxODc1NjUzNjIyNTQzMDYxLDE1NDY5NTEwMDcseyJTdGF0ZW1lbnQiOlt7IkFjdGlvbiI6WyJvZHBzOlJlYWQiXSwiRWZmZWN0IjoiQWxsb3ciLCJSZXNvdXJjZSI6WyJhY3M6b2RwczoqOnByb2plY3RzL3FuX2JlaWppbmcvaW5zdGFuY2VzLzIwMTkwMTA1MTIzNjQ3NzAzZ3BxbjI2cHIyIl19XSwiVmVyc2lvbiI6IjEifQ==
成功标准: <看到以下输出,可能会有其他日志一并输出>
19/01/05 20:37:34 INFO Client: 
 client token: N/A
 diagnostics: N/A
 ApplicationMaster host: 11.220.203.36
 ApplicationMaster RPC port: 30002
 queue: queue
 start time: 1546691807945
 final status: SUCCEEDED
 tracking URL: http://jobview.odps.aliyun.com/proxyview/jobview/?h=http://service.cn.maxcompute.aliyun-inc.com/api&p=project_name&i=20190105123647703gpqn26pr2&t=spark&id=application_1546691794888_113905562&metaname=20190105123647703gpqn26pr2&token=TjhlQWswZTRpYWN2L3RuK25VeE5LVy9xSUNjPSxPRFBTX09CTzoxODc1NjUzNjIyNTQzMDYxLDE1NDY5NTEwMzcseyJTdGF0ZW1lbnQiOlt7IkFjdGlvbiI6WyJvZHBzOlJlYWQiXSwiRWZmZWN0IjoiQWxsb3ciLCJSZXNvdXJjZSI6WyJhY3M6b2RwczoqOnByb2plY3RzL3FuX2JlaWppbmcvaW5zdGFuY2VzLzIwMTkwMTA1MTIzNjQ3NzAzZ3BxbjI2cHIyIl19XSwiVmVyc2lvbiI6IjEifQ==

通过日志输出的logview在浏览器中可以查看CUPID类型的任务执行的基本信息。

单击TaskName为
master-0任务条,在下方FuxiInstance栏中,通过
All按钮过滤后,

      

单击TempRoot的StdOut按钮可以查看SparkPi的输出结果:

日志中打印出上述的TrackingUrl,表示您的作业已经提交到MaxCompute集群,这个TrackingUrl非常关键,它既是SparkWebUI,也是HistoryServer的Url。在浏览器中打开这个Url,可以追踪Spark作业的运行情况。

单击driver的stdout即可以查看Spark作业的输出内容。


原文链接
本文为云栖社区原创内容,未经允许不得转载。


http://chatgpt.dhexx.cn/article/IcKd8Wyn.shtml

相关文章

idea搭建Spark开发环境

最近在公司换了一个项目组&#xff0c;做Spark项目的&#xff0c;于是开始学Spark。 版本: <scala.version>2.13.8</scala.version><spark.version>3.3.0</spark.version> 1.首先安装Scala Scala安装成功之后&#xff1a; 2.新建maven项目 pom文件: …

Spark开发学习之使用idea开发Spark应用

Spark学习之使用idea开发Spark应用 该文章是基于jdk1.8&#xff0c;idea开发工具&#xff0c;maven都配置好的前提下进行讲述的。 背景 由于已经在远程centos服务器上部署了saprk服务&#xff0c;但基于spark的应用程序的代码却是在本地idea开发的&#xff0c;那么如何能让本…

Spark开发环境搭建

一、安装Spark 1.1 下载并解压 官方下载地址&#xff1a;http://spark.apache.org/downloads.html &#xff0c;选择 Spark 版本和对应的 Hadoop 版本后再下载&#xff1a; 解压安装包&#xff1a; # tar -zxvf spark-2.2.3-bin-hadoop2.6.tgz1.2 配置环境变量 # vim /e…

IDEA2022 配置spark开发环境

本人强烈建议在 linux环境下 学习 spark&#xff01;&#xff01;&#xff01; Introduction Apache Spark是一个快速且通用的分布式计算引擎&#xff0c;可以在大规模数据集上进行高效的数据处理&#xff0c;包括数据转换、数据清洗、机器学习等。在本文中&#xff0c;我们将…

spark开发教程

spark开发教程 目录 spark开发教程前言一、初始化spark二、获取数据源1.创建数据结构2.连接外部数据textfilejdbchive 3. 数据处理rdd算子transform算子action算子 dataframe操作dataset操作 4. 共享变量5.写入数据 总结 前言 spark开发主要的基于RDD、Datasets、DataFrame、s…

Spark 开发总结

Spark 开发总结 前言spark UISpark API FunctionWindow.partitionBy Spark udfSpark 中禁止使用returnSpark NullPointExceptionSpark Shuffle FetchFailedExceptionspark 数据倾斜 前言 大数据开发过程中把自己积累的关于Spark的使用方法记录下来&#xff0c;便于不断的回顾和…

Spark 开发入门

文章目录 Spark是什么DAG有向无环图 spark环境搭建Spark开发pyspark使用pythonSpark初始化创建RDD数据的读取和保存文本文件Json文件 RDD的转换操作RDD的行动操作集合操作mysql读取 Spark是什么 整个Hadoop生态圈分为分布式文件系统HDFS、计算框架MapReduce以及资源调度框架Ya…

Spark开发——Spark简介及入门

目录 什么是Spark&#xff1f; Spark有哪些特点和优势 1.计算速度 2.易用性 3.通用性 4.兼容性 Spark架构 Spark基本概念 Spark结构设计 使用Scala语言实现Spark本地词频统计 什么是Spark&#xff1f; Spark它是一个用于大规模数据处理的实时计算引擎。 Spark有哪些…

Spark开发指南

目 录 6 Spark开发指南 6.1 概述 6.2 开发环境准备 6.2.1 Java开发环境准备 6.2.2 Scala开发环境准备 6.3 开发指引 6.4 Java代码样例 6.5 Scala代码样例 6.6 对外接口 6.6.1 Java API 6.6.2 Scala API 6.6.3 Python API 6.6.4 Web UI 6.6.5 JDBC 6 Spark开发指南…

PIX飞控电流计设置

在 测量电池电压 一栏输入用电压表测得的电池电压&#xff0c;保存。

pixhawk飞控接口含义

官方文档&#xff1a;https://docs.px4.io/v1.9.0/en/flight_controller/pixhawk.html 1——spektrum DSM receiver2&#xff0c;3——远程通信口&#xff0c;接数传4——串口5——SPI6——电源口7——飞控的安全开关&#xff0c;长按启动解锁8——蜂鸣器9——串口10——GPS11—…

PIX飞控不能解锁问题总结

摘自&#xff1a;https://baijiahao.baidu.com/s?id1640767431717207814&wfrspider&forpc PIX飞控不能解锁问题总结 给力蹦小勇士 发布时间&#xff1a;19-08-0222:55 一、飞控故障或没校准 在地面站里飞行数据菜单查看报错。假如加速度计和地磁没校准&#xff0c;…

富斯i6航模遥控器配apm(pix)飞控mission planner疑难杂症解决策略(上)

提示&#xff1a;仅适用于新手入门参考。 目录 前言 在missionplanner调试遥控器出现信号异常&#xff0c;飞行调试出现操作异常如何处理&#xff0c;在硬件无损的前提下&#xff0c;如何进行简易调试&#xff0c;下文将介绍入门的处理办法。 一、切换飞行模式时突然出现油门…

Mission Planner初学者安装调试教程指南(APM或PIX飞控)3——连接与烧录

Mission Planner初学者安装调试教程指南&#xff08;APM或PIX飞控&#xff09;3——连接与烧录 目录 1.连接方式 2.烧录固件 1.连接方式 通常可以使用micro USB数据线直接连接APM&#xff08;pixhawk&#xff09;&#xff0c;将数据线一头接入电脑usb口&#xff0c;另一头接…

pixhawk飞控板的硬件构成

具体介绍 pixhawk是一款高性能的飞控板&#xff0c;它能用于固定翼&#xff0c;多旋翼&#xff0c;直升机&#xff0c;小车等多种应用。它能被用于研究用&#xff0c;玩耍用&#xff0c;甚至直接用于做产品。这款飞控其实是将PX4FMU和PX4IO做了一个封装&#xff0c;将两部分PC…

Mission Planner初学者安装调试教程指南(APM或PIX飞控)5——规划航点航线

目录 1.卫星地图上规划普通航点 2.曲线航点 3.规划多边形区域 4.环形航线 5. 曲线航线 6.设置网格 7.特殊航线 学习地面站&#xff0c;不可避免要触及英文指令。通过经常使用日常积累&#xff0c;可以熟练掌握各个指令的含义。serve the people heart and soul&#xff0…

OPENMV结合PIX飞控实现四轴定点 循迹 2017电赛

本文章代码已上传Github&#xff1a; https://github.com/Kevincoooool/2017_Follow 有兴趣的可以加个STAR 自从17年国赛之后&#xff0c;自己做了openmv&#xff0c;加了很多群&#xff0c;也了解到很多人都在想着这个题。 第一版 第二版 第三版 我们做国赛的时候实现了全…

飞行控制器Pixhawk简介

作者&#xff1a;华清远见讲师 Pixhawk是一款由PX4开源项目设计并由3DR公司制造生产的高级自动驾驶仪系统。其前身是APM&#xff0c;由于APM的处理器已经接近满负荷&#xff0c;没有办法满足更复杂的运算处理&#xff0c;所以硬件厂商采用了目前最新标准的32位ARM处理器&#x…

pixhawk飞控解锁方法

1. pixhawk飞控解锁方法是&#xff1a;油门(throttl)拉到最低,偏航角&#xff08;yaw&#xff09;拉到最右边。

如何用开源飞控PIXHAWK进行二次开发?

著作权归作者所有。 商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 作者&#xff1a;我是肉包子 链接&#xff1a;http://www.zhihu.com/question/38874663/answer/84239995 来源&#xff1a;知乎 以下所描述的都是针对px4原生固件&#xff0c;此外&#xff0…