共計 13742 個字符,預(yù)計需要花費 35 分鐘才能閱讀完成。
這期內(nèi)容當(dāng)中丸趣 TV 小編將會給大家?guī)碛嘘P(guān) MaxCompute Spark 開發(fā)的示例分析,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
MaxCompute Spark 開發(fā) 0. 概述
MaxCompute Spark 是 MaxCompute 提供的兼容開源的 Spark 計算服務(wù),它在統(tǒng)一的計算資源和數(shù)據(jù)集權(quán)限體系之上,提供 Spark 計算框架,支持用戶以熟悉的開發(fā)使用方式提交運行 Spark 作業(yè),以滿足更豐富的數(shù)據(jù)處理分析場景。
下面將重點介紹 MaxCompute Spark 能夠支撐的應(yīng)用場景,同時說明開發(fā)的依賴條件和環(huán)境準(zhǔn)備,重點對 Spark 作業(yè)開發(fā)、提交到 MaxCompute 集群執(zhí)行、診斷進(jìn)行介紹。
1. 前提條件
MaxCompute Spark 是阿里云提供的 Spark on MaxCompute 的解決方案,能夠讓 Spark 應(yīng)用運行在托管的 MaxCompute 計算環(huán)境中。為了能夠在 MaxCompute 環(huán)境中安全地運行 Spark 作業(yè),MaxCompute 提供了以下 SDK 和 MaxCompute Spark 定制發(fā)布包。
SDK 定位于開源應(yīng)用接入 MaxCompute SDK:
提供了集成所需的 API 說明以及相關(guān)功能 Demo,用戶可以基于項目提供的 Spark-1.x 以及 Spark-2.x 的 example 項目構(gòu)建自己的應(yīng)用,并且提交到 MaxCompute 集群上。
MaxCompute Spark 客戶端發(fā)布包:
集成了 MaxCompute 認(rèn)證功功能,作為客戶端工具,用于通過 Spark-submit 方式提交作業(yè)到 MaxCompute 項目中運行,目前提供了面向 Spark1.x 和 Spark2.x 的 2 個發(fā)布包:spark-1.6.3 和 spark-2.3.0 SDK 在開發(fā)時,可以通過配置 Maven 依賴進(jìn)行引用。Spark 客戶端需要根據(jù)開發(fā)的 Spark 版本,提前下載。如,需要開發(fā) Spark1.x 應(yīng)用,應(yīng)下載 spark-1.6.3 版本客戶端;如需開發(fā) Spark2.x 應(yīng)用,應(yīng)下載 spark-2.3.0 客戶端。
2. 開發(fā)環(huán)境準(zhǔn)備 2.1 Maxcompute Spark 客戶端準(zhǔn)備
MaxCompute Spark 發(fā)布包:集成了 MaxCompute 認(rèn)證功功能,作為客戶端工具,用于通過 Spark-submit 方式提交作業(yè)到 MaxCompute 項目中運行,目前提供了面向 Spark1.x 和 Spark2.x 的 2 個發(fā)布包:
spark-1.6.3
spark-2.3.0
請根據(jù)需要開發(fā)的 Spark 版本,選擇合適的版本下載并解壓 Maxcompute Spark 發(fā)布包。
2.2 設(shè)置環(huán)境變量
JAVA_HOME 設(shè)置
# 盡量使用 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 設(shè)置
export SPARK_HOME=/path/to/spark_extracted_package
export PATH=$SPARK_HOME/bin:$PATH
2.3 設(shè)置 Spark-defaults.conf
在 $SPARK_HOME/conf
路徑下存在 spark-defaults.conf.template 文件,這個可以作為 spark-defaults.conf 的模版,需要在該文件中設(shè)置 MaxCompute 相關(guān)的賬號信息后,才可以提交 Spark 任務(wù)到 MaxCompute。默認(rèn)配置內(nèi)容如下,將空白部分根據(jù)實際的賬號信息填上即可,其余的配置可以保持不變。
# 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 表所需依賴
若作業(yè)需要訪問 MaxCompute 表,需要依賴 odps-spark-datasource 模塊,本節(jié)介紹如何把該依賴編譯安裝到本地 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
編譯模塊
#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 依賴
若作業(yè)需要訪問 OSS,直接添加以下依賴即可
dependency
groupId com.aliyun.odps /groupId
artifactId hadoop-fs-oss /artifactId
version 3.3.2-public /version
/dependency
5. 應(yīng)用開發(fā)
MaxCompute 產(chǎn)品提供了兩個應(yīng)用構(gòu)建的模版,用戶可以基于此模版進(jìn)行開發(fā),最后統(tǒng)一構(gòu)建整個項目后用生成的應(yīng)用包即可直接提交到 MaxCompute 集群上運行 Spark 應(yīng)用。
5.1 通過模版構(gòu)建應(yīng)用
MaxCompute Spark 提供兩個應(yīng)用構(gòu)建模版,用戶可以基于此模版進(jìn)行開發(fā),最后統(tǒng)一構(gòu)建整個項目后用生成的應(yīng)用包即可直接提交到 MaxCompute 集群上運行 Spark 應(yīng)用。首先需要把代碼 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 目錄下創(chuàng)建名為 spark-1.x-demo(spark-2.x-demo)的 maven project,執(zhí)行以下命令進(jìn)行編譯和提交作業(yè):
#cd /tmp/spark-2.x/demo
#mvn clean package
// 提交作業(yè)
$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 參考文檔”置環(huán)境變量”指引,填寫 MaxCompute 項目相關(guān)配置項
# 執(zhí)行 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 開發(fā)樣例 Spark-1.x
pom.xml 須知
請注意 用戶構(gòu)建 Spark 應(yīng)用的時候,由于是用 MaxCompute 提供的 Spark 客戶端去提交應(yīng)用,故需要注意一些依賴 scope 的定義
spark-core spark-sql 等所有 spark 社區(qū)發(fā)布的包,用 provided scope
odps-spark-datasource 用默認(rèn)的 compile scope
!– spark 相關(guān)依賴, 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
詳細(xì)代碼
提交方式
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
詳細(xì)代碼
提交方式
# 運行可能會報 Table Not Found 的異常,因為用戶的 MaxCompute Project 中沒有代碼中指定的表
# 可以參考代碼中的各種接口,實現(xiàn)對應(yīng) Table 的 SparkSQL 應(yīng)用
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
詳細(xì)代碼
提交方式
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
詳細(xì)代碼
提交方式
# 代碼中的 OSS 賬號信息相關(guān)需要填上,再編譯提交
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
詳細(xì)代碼
提交方式
# 代碼中的 OSS 賬號信息相關(guān)需要填上,再編譯提交
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 須知
請注意 用戶構(gòu)建 Spark 應(yīng)用的時候,由于是用 MaxCompute 提供的 Spark 客戶端去提交應(yīng)用,故需要注意一些依賴 scope 的定義
spark-core spark-sql 等所有 spark 社區(qū)發(fā)布的包,用 provided scope
odps-spark-datasource 用默認(rèn)的 compile scope
!– spark 相關(guān)依賴, 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
詳細(xì)代碼
提交方式
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 表
詳細(xì)代碼
提交方式
# 運行可能會報 Table Not Found 的異常,因為用戶的 MaxCompute Project 中沒有代碼中指定的表
# 可以參考代碼中的各種接口,實現(xiàn)對應(yīng) Table 的 SparkSQL 應(yīng)用
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
詳細(xì)代碼
提交方式
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
詳細(xì)代碼
提交方式
# 代碼中的 OSS 賬號信息相關(guān)需要填上,再編譯提交
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
詳細(xì)代碼
提交方式
# 代碼中的 OSS 賬號信息相關(guān)需要填上,再編譯提交
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 開發(fā)樣例
需要文件
若需要訪問 MaxCompute 表,則需要參考第三節(jié)(訪問 MaxCompute 表所需依賴) 編譯 datasource 包
SparkSQL 應(yīng)用示例(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 應(yīng)用示例(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 環(huán)境內(nèi)服務(wù)
對于用戶使用 Spark on MaxCompute 對 VPC 環(huán)境內(nèi)的 RDS、Redis、ECS 主機部署的服務(wù)等,受限于 VPC 的訪問限制,暫時還無法訪問,即將在近期支持。
7. 如何把開源 Spark 代碼遷移到 Spark on MaxCompute
case1. 作業(yè)無需訪問 MaxCompute 表和 OSS
用戶 jar 包可直接運行,參照第二節(jié)準(zhǔn)備開發(fā)環(huán)境和修改配置。注意,對于 spark 或 hadoop 的依賴必須設(shè)成 provided。
case2. 作業(yè)需要訪問 MaxCompute 表
參考第三節(jié)編譯 datasource 并安裝到本地 maven 倉庫,在 pom 中添加依賴后重新打包即可。
case3. 作業(yè)需要訪問 OSS
參考第四節(jié)在 pom 中添加依賴后重新打包即可。
8. 任務(wù)提交執(zhí)行
目前 MaxCompute Spark 支持以下幾種運行方式:local 模式,cluster 模式,和在 DataWorks 中執(zhí)行模式。
8.1 Local 模式
local 模式主要是讓用戶能夠方便的調(diào)試應(yīng)用代碼,使用方式跟社區(qū)相同,我們添加了用 tunnel 讀寫 ODPS 表的功能。用戶可以在 ide 和命令行中使用該模式,需要添加配置 spark.master=local[N],其中 N 表示執(zhí)行該模式所需要的 cpu 資源。此外,local 模式下的讀寫表是通過讀寫 tunnel 完成的,需要在 Spark-defaults.conf 中增加 tunnel 配置項(請根據(jù) MaxCompute 項目所在的 region 及網(wǎng)絡(luò)環(huán)境填寫對應(yīng)的 Tunnel Endpoint 地址):tunnel_end_point=http://dt.cn-beijing.maxcompute.aliyun.com。命令行執(zhí)行該模式的方式如下:
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 結(jié)束(Success or Fail)spark job 就會結(jié)束。使用場景適合于離線作業(yè),可以與阿里云 DataWorks 產(chǎn)品結(jié)合進(jìn)行作業(yè)調(diào)度。命令行提交方式如下:
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 執(zhí)行模式
用戶可以在 DataWorks 中運行 MaxCompute Spark 離線作業(yè)(cluster 模式),以方便與其他類型執(zhí)行節(jié)點集成和調(diào)度。
用戶需要在 DataWorks 的業(yè)務(wù)流程中上傳并提交 (記得要單擊 提交 按鈕) 資源:
第二步:在創(chuàng)建的業(yè)務(wù)流程中,從數(shù)據(jù)開發(fā)組件中選擇 ODPS Spark 節(jié)點。
雙擊拖拽到工作流的 Spark 節(jié)點,對 Spark 作業(yè)進(jìn)行任務(wù)定義:
選擇 Spark 的版本、任務(wù)使用的開發(fā)語言,并指定任務(wù)所使用的資源文件。這里的資源文件就是第一步在業(yè)務(wù)流程中預(yù)先上傳并發(fā)布的資源文件。同時,您還可以指定提交作業(yè)時的配置項,如 executor 的數(shù)量、內(nèi)存大小等配置項。同時設(shè)置配置項: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 信息。
手動執(zhí)行 Spark 節(jié)點,可以查看該任務(wù)的執(zhí)行日志,從打印出來的日志中可以獲取該任務(wù)的 logview 和 jobview 的 url,編譯進(jìn)一步查看與診斷
Spark 作業(yè)定義完成后,即可以在業(yè)務(wù)流程中對不同類型服務(wù)進(jìn)行編排、統(tǒng)一調(diào)度執(zhí)行。9. 作業(yè)診斷
提交作業(yè)后,需要根據(jù)作業(yè)日志來檢查作業(yè)是否正常提交并執(zhí)行,MaxCompute 對于 Spark 作業(yè)提供了 Logview 工具以及 Spark Web-UI 來幫助開發(fā)者進(jìn)行作業(yè)診斷。
例如,通過 Spark-submit 方式 (dataworks 執(zhí)行 spark 任務(wù)時也會產(chǎn)生相應(yīng)日志) 提交作業(yè),在作業(yè)日志中會打印以下關(guān)鍵內(nèi)容:
通過日志輸出的 logview 在瀏覽器中可以查看 CUPID 類型的任務(wù)執(zhí)行的基本信息。
單擊 TempRoot 的 StdOut 按鈕可以查看 SparkPi 的輸出結(jié)果:
日志中打印出上述的 TrackingUrl,表示您的作業(yè)已經(jīng)提交到 MaxCompute 集群,這個 TrackingUrl 非常關(guān)鍵,它既是 SparkWebUI,也是 HistoryServer 的 Url。在瀏覽器中打開這個 Url,可以追蹤 Spark 作業(yè)的運行情況。
單擊 driver 的 stdout 即可以查看 Spark 作業(yè)的輸出內(nèi)容。
上述就是丸趣 TV 小編為大家分享的 MaxCompute Spark 開發(fā)的示例分析了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道。