Spark spark-submit 提交的幾種模式
-
local 模式
- 程式碼
package com.imooc.spark.Test import org.apache.spark.sql.types.{StringType, StructField, StructType} import org.apache.spark.sql.{Row, SaveMode, SparkSession} /** * 測試sparkContext 案例 */ object TestOfSparkContext2 { def main(args: Array[String]): Unit = { //System.setProperty("hadoop.home.dir", "E:\\soft\\winutils\\hadoop-common-2.2.0-bin-master") val spark = SparkSession.builder() .appName("TestOfSparkContext2") .master("local[2]").getOrCreate() //反射的方式 RDD=>DF // reflection(spark) //程式設計的方式 RDD=>DF program(spark) spark.stop() } private def reflection(spark: SparkSession) = { val rdd = spark.sparkContext .textFile("file///home/hadoop/data/test-data-spark/emp-forSpark.txt") .map(w => w.split("\t")) import spark.implicits._ val empDF = rdd.map(line => EMP(line(0), line(1), line(2), line(3), line(4), line(5), line(6), line(7))).toDF() empDF.printSchema() empDF.show() } def program(spark: SparkSession) = { val infoRdd = spark.sparkContext .textFile("/home/hadoop/data/test-data-spark/emp-forSpark.txt") .map(w => w.split("\t")).map(line => Row(line(0), line(1), line(2), line(3), line(4), line(5), line(6), line(7))) val filedName = Array(StructField("empNo", StringType, true) , StructField("ename", StringType, true), StructField("job", StringType, true) , StructField("mgr", StringType, true), StructField("hireDate", StringType, true) , StructField("sal", StringType, true), StructField("comm", StringType, true) , StructField("deptNo", StringType, true)) val schema = StructType(filedName) val empDf = spark.createDataFrame(infoRdd, schema) empDf.printSchema() empDf.show(false) //註冊臨時表 empDf.createOrReplaceTempView("emp") val sqlDF = spark.sql("select ename,job,comm from emp") // sqlDF.printSchema() //sqlDF.show() /*empDf.write.format("json") .mode(SaveMode.Overwrite).save("E:///testData/empTable3")*/ empDf.coalesce(1).write.format("json").mode(SaveMode.Overwrite) .partitionBy("deptno").save("/home/hadoop/app/spark-2.1.1-bin-2.6.0-cdh5.7.0/testData/emp-jsonTable") } case class EMP(empNo: String, empName: String, job: String, mgr: String, hiredate: String, sal: String, comm: String, deptNo: String) }
- 打包
- 提交
在$SPARK_HOME 下執行
./bin/spark-submit \
--class com.imooc.spark.Test.TestOfSparkContext2 \
--master local[2] \
/home/hadoop/data/test-jar/sql-1.0.jar
- 引數解釋
對empDf.write.format(“json”)
.mode(SaveMode.Overwrite).save(“E:///testData/empTable3”)*/
empDf.coalesce(1).write.format(“json”).mode(SaveMode.Overwrite)
.partitionBy(“deptno”).save("/home/hadoop/app/spark-2.1.1-bin-2.6.0-cdh5.7.0/testData/emp-jsonTable")中的引數解釋
write.format(“json”) | 寫入檔案的格式 |
---|---|
mode(SaveMode.Overwrite). | 儲存檔案,如果檔案已經存在,則覆蓋.還有:Append(如果存在,則追加),ErrorIfExists(如果存在報錯,則退出)等) |
empDf.coalesce(1) | 分割槽的個數,如10,則在每個部門分割槽下被分成10個新分割槽 |
partitionBy(“deptno”). | 指定儲存分割槽欄位 |
save("/home/hadoop/app/spark-2.1.1-bin-2.6.0-cdh5.7.0/testData/emp-jsonTable") | 報錯檔案路徑.注意:如果是直接儲存到本地,file://path…;如果是儲存到HDFS下,則路徑是:hdfs:/ip:port+path;特別是如果是yarn模式提交,檔案路徑,直接寫hdfs上的路徑,且只能是hdfs上的路,如:/user/hadoop/… |
-
yarn client模式提交
- 程式碼
package com.imooc.spark.Test
import org.apache.spark.sql.types.{StringType, StructField, StructType}
import org.apache.spark.sql.{Row, SaveMode, SparkSession}
/**
* 測試sparkContext 案例
*/
object TestOfSparkContext2OnYarn {
def main(args: Array[String]): Unit = {
//System.setProperty("hadoop.home.dir", "E:\\soft\\winutils\\hadoop-common-2.2.0-bin-master")
/*val spark = SparkSession.builder()
.appName("TestOfSparkContext2OnYarn")
.master("local[2]").getOrCreate()*/
val path = "/user/hadoop/data/test-data-forSpark/emp-forSpark.txt"
val spark = SparkSession.builder().getOrCreate()
//反射的方式 RDD=>DF
// reflection(spark,path)
//程式設計的方式 RDD=>DF
program(spark,path)
spark.stop()
}
private def reflection(spark: SparkSession,path:String ) = {
val rdd = spark.sparkContext
.textFile(path)
.map(w => w.split("\t"))
import spark.implicits._
val empDF = rdd.map(line =>
EMP(line(0), line(1), line(2), line(3),
line(4), line(5), line(6), line(7))).toDF()
empDF.printSchema()
empDF.show()
}
def program(spark: SparkSession,path:String) = {
val infoRdd = spark.sparkContext
.textFile(path)
.map(w => w.split("\t")).map(line => Row(line(0), line(1), line(2), line(3), line(4), line(5), line(6), line(7)))
val filedName = Array(StructField("empNo", StringType, true)
, StructField("ename", StringType, true), StructField("job", StringType, true)
, StructField("mgr", StringType, true), StructField("hireDate", StringType, true)
, StructField("sal", StringType, true), StructField("comm", StringType, true)
, StructField("deptNo", StringType, true))
val schema = StructType(filedName)
val empDf = spark.createDataFrame(infoRdd, schema)
empDf.printSchema()
empDf.show(false)
//註冊臨時表
empDf.createOrReplaceTempView("emp")
val sqlDF = spark.sql("select ename,job,comm from emp")
// sqlDF.printSchema()
//sqlDF.show()
/*empDf.write.format("json")
.mode(SaveMode.Overwrite).save("E:///testData/empTable3")*/
empDf.coalesce(1).write.format("json").mode(SaveMode.Overwrite)
.partitionBy("deptno").save("hdfs://hadoop001:9000/user/hadoop/emp-spark-test/emp-jsonOnYarnTable")
}
case class EMP(empNo: String, empName: String, job: String, mgr: String, hiredate: String,
sal: String, comm: String, deptNo: String)
}
- 提交
./bin/spark-submit \
--class com.imooc.spark.Test.TestOfSparkContext2OnYarn \
--master yarn \
/home/hadoop/data/jar-test/sql-3.0-onYarn.jar
./bin/spark-submit \
--class com.imooc.spark.Test.TestOfSparkContext2OnYarn \
--master yarn \
--deploy-mode client \
/home/hadoop/data/jar-test/sql-3.0-onYarn.jar
注意:
spark-submit 提交jar包到yarn上的時候,資料輸入路徑,資料輸出路徑都必須是HDFS的路徑,否則報錯 :Input path does not exist
- 檢視
- 日誌直接在控制檯輸出
- 結果
[[email protected] ~]$ hadoop fs -ls /user/hadoop/emp-spark-test/emp-jsonOnYarnTable
18/11/20 17:42:27 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Found 5 items
-rw-r--r-- 1 hadoop supergroup 0 2018-11-20 17:33 /user/hadoop/emp-spark-test/emp-jsonOnYarnTable/_SUCCESS
drwxr-xr-x - hadoop supergroup 0 2018-11-20 17:33 /user/hadoop/emp-spark-test/emp-jsonOnYarnTable/deptno=10
drwxr-xr-x - hadoop supergroup 0 2018-11-20 17:33 /user/hadoop/emp-spark-test/emp-jsonOnYarnTable/deptno=20
drwxr-xr-x - hadoop supergroup 0 2018-11-20 17:33 /user/hadoop/emp-spark-test/emp-jsonOnYarnTable/deptno=30
drwxr-xr-x - hadoop supergroup 0 2018-11-20 17:33 /user/hadoop/emp-spark-test/emp-jsonOnYarnTable/deptno=44
[[email protected] ~]$
注意
- 本地提交:輸入輸出路檔案在本地寫法:file:///
- 輸入輸出檔案在HDFS寫法:hdfs://ip:port/
- 其中提交模式是yarn模式的時候,輸入輸出只能是在hdfs上操作
-
yarn cluster 模式
- 提交命令
sql-1.0-yarnCluster.jar
./bin/spark-submit \
--class com.imooc.spark.Test.TestOfSparkContext2OnYarn \
--master yarn-cluster \
/home/hadoop/data/jar-test/sql-3.0-onYarn.jar
- 檢視
- 檢視輸出日誌需要在 yarn的日誌上檢視
- Spark on YARN 之 client 與cluster 模式區別
模式 | 區別 |
---|---|
yarn-client | Driver執行在Client端;Client請求container完成作業排程執行,client不能退出;日誌在控制檯輸出,方便檢視 |
yarn-cluster | Driver執行在applicationMaster;Client一但提交作業就可以關掉,作業已經執行在yarn上;日誌在客戶端看不到,以為作業執行在yarn上,通過 yarn logs -applicationIdapplication_id 檢視呢 |
-
standalone 模式
- 程式碼
和local模式一樣和local模式一樣
- 提交
./bin/spark-submit
–class com.imooc.spark.Test.TestOfSparkContext2
–master spark://192.168.52.130:7077
–executor-memory 4G
–total-executor-cores 6
/home/hadoop/data/jar-test/sql-1.0-yarnCluster.jar
-
三種模式比較
模式 | 簡介 |
---|---|
local | 開發使用 |
standalone | Spark自帶,如果一個叢集是Standalone的話,需要在每臺機器上部署Spark |
YARN | 建議大家在生產上使用該模式,統一使用YARN對整個叢集作業(MR/Spark)的資源排程 |
Mesos |
-
提交引數詳解
引數 | 作用 |
---|---|
–class | jar包的包路徑,如:com.imooc.spark.Test.TestOfSparkContext2OnYarn |
–master | 1.local[k]:本地模式,設定k個core ;2.yarn模式(1)-master yarn \ ----deploy-mode yarn-client–master;(2) yarn \ ----deploy-mode yarn-cluster 注意:不寫----deploy-mode:預設是yarn-client模式; |
執行jar包 | 3./home/hadoop/data/jar-test/sql-3.0-onYarn.jar 執行的jar包 |
–executor-memory | 分配記憶體 |
–master local[8] | 8個core |
1000 | 1000個task |
相關推薦
spark 環境搭建及幾種模式測試
spark 環境搭建及幾種模式測試 spark安裝部署spark安裝前的環境準備 需要安裝jdk、scala、hadoop作為前提環境。 1、安裝jdk1.7 先解除安裝自帶的jdk,防止自帶的jdk和安裝的出現衝突。而且自帶的版本較低不能滿足現在軟體對jdk的要求。 使用
Spark spark-submit 提交的幾種模式
local 模式 程式碼 package com.imooc.spark.Test import org.apache.spark.sql.types.{StringType, StructField, StructType} import org
運行Spark程序的幾種模式
etc 屏幕 角色 ast java_home enabled driver env ram 一. local 模式 -- 所有程序都運行在一個JVM中,主要用於開發時測試 無需開啟任何服務,可直接運行 ./bin/run-example 或 ./bin/spark-
spark的幾種模式的比較
在spark的學習中,spark一共有四種模式,分別是: spark基於local spark基於standalone spark基於yarn spark基於metsos Standalone模式兩種提交任務方式 Standalone-cli
Spark Standalone與Spark on YARN的幾種提交方式
不多說,直接上乾貨! Spark Standalone的幾種提交方式 別忘了先啟動spark叢集!!! spark-shell用於除錯,spark-submit用於生產。 1.spark-shell client [[email protected] spark-1
Spark on yarn的兩種模式 yarn-cluster 和 yarn-client
然而 技術 負責 blog 作業 mage 申請 .com contain 從深層次的含義講,yarn-cluster和yarn-client模式的區別其實就是Application Master進程的區別,yarn-cluster模式下,driver運行在AM(Appli
spark寫入mysql的幾種方法,針對不同場景
方法一:各個欄位都是提前定好的 val prop = new java.util.Properties prop.setProperty("user", "root") prop.setProperty("password", "123456") df1.write.mode(SaveMode
檢視spark任務日誌的幾種方式
spark執行的任務往往通過web來檢視,但是,當執行的是sparkStreaming任務時,日誌往往會很大,web檢視並不方便,因此需要定位到伺服器上去看。下面將分別介紹兩種檢視driver端和executor端日誌的方式。一、web端日誌的檢視:下面是四個yarn
hybrid幾種模式
訪問 andro 原生應用 需要 ble 依賴 綁定 內核 client native和web適合的場景 Native: 用戶體驗要求高 業務變動很小(如首頁) 性能要求高 Web: 業務變化頻繁(如廣告) 性能要求低 展
總結js面向對象調用的幾種模式
跟著 模式 也會 name proto bject prot .proto 混合模式 一、工廠模式:類似於function func(A,B){ var obj=new Object(); obj.A=A; obj.B=B; return obj;}; var obt
JavaScript中創建對象的幾種模式
-c aps lang mage pen lin round property mar 代碼如下: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <met
vim的幾種模式&快捷鍵
後退 -h shell命令 識別 需要 刪除 .html 頁簽 空字符 vim的幾種模式&快捷鍵 2017年01月01日 14:05:24 閱讀數:3060 一.vim的模式 基本上vim可以分為三種模式:命令模式,插入模式和底行模式,其實vi
交易所系統有哪幾種模式?交易系統開發,imToken錢包開發
易信 完成後 操作 愛好 數字 比例 線下 借貸 風險 交易所系統有哪幾種模式?交易系統開發,imToken錢包開發 交易系統有哪幾種模式? (1)OTC交易系統 OTC:是一套獨立於交易所外的線下購買數字資產的平臺,任何人都可以在該平臺上發布購買/出售廣告,購買/出售用戶
建立物件的幾種模式
一般建立物件是用以下兩種方式 new object建立物件: var Person = new Object(); Person.name = "張三"; Person.age = "18"; Person.job = "123"; 或者,物件字面量的方式: var Person =
創建對象的幾種模式
開發 組合 無法 只需要 toolbar 同名 工廠模式 但是 方式 一般創建對象是用以下兩種方式 new object創建對象: var Person = new Object(); Person.name = "張三"; Person.age = "18";
redis幾種模式的部署(Windows下實現)
原文地址:https ://www.cnblogs.com/yu421/p/8081544.html <參考> http://www.cnblogs.com/ruiati/p/6374152.html 1.自行下載redis客戶端.redis官方不支援Windows系統,所以官網
vim的幾種模式
Normal Mode 普通模式 功能:在這種模式下可以移動游標等。 進入:預設進入vim之後,處於這種模式。在其他模式下狂按ESC後進入此模式。 Visual Mode 可視模式 功能:在這種模式下可以選定一些字元、行、多列。 進入:在普通模式下,按v進入。 Insert Mode 插入模式
Atitit 單點登入實現幾種模式架構圖 目錄 1. 因此要點也就以下兩個:儲存信任驗證信任 1 1.1. 共享cookie (最簡單 1 1.2. 通過 url帶token引數跳轉 1 1.3.
Atitit 單點登入實現幾種模式架構圖 目錄 1. 因此要點也就以下兩個:儲存信任驗證信任 1 1.1. 共享cookie (最簡單 1 1.2. 通過 url帶token引數跳轉 1 1.3. 頁面重定向(複雜 1 1.3.1. 父子應用重定向 2
(四)高德地圖之定位的幾種模式
這一節主要實現的功能是地圖定位的幾種模式,包括展示、定位、追隨、旋轉、旋轉位置、跟隨不移動中心點、旋轉不移動中心點、旋轉位置不移動到中心點,我們根據實際需要來選擇用那種模式。下面還是主要從程式碼中來體現,主要部分有註釋。 還是先新建佈局檔案:activity_locationmodesour
DevOps--幾種模式
目錄 模式一 模式二 模式三 本文摘抄自:DevOps的概念與實踐 模式一 敏捷開發模式 通常,在軟體開發專案中,開發會用完所有計劃的時間用於開發功能,這樣會導致無法充分解決IT運維的問題,這就是開發和IT運維以及次優結果之間的永恆的緊張關