您好,登錄后才能下訂單哦!
這篇文章主要講解了“spark初始化怎么配置”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“spark初始化怎么配置”吧!
1. 在較高層次上,每個spark應用程序包含一個驅動程序,去調用用戶的main函數,在集群上執行各種并行操作。spark主要的抽象,是提供了RDD數據類型。RDD數據類型是一組分割在集群上可以被并行操作的元素集合。RDD可以通過HDFS上的文件,驅動程序已有的集合,或對已有的RDD進行變換來創建。用戶也可以將RDD持久化,保存在內存中,以被有效的重用。RDD也將自動從失敗中恢復。spark的第二個抽象是可以被并行操作的共享變量。默認情況下,spark運行函數時,將在不同的節點上啟動獨立的任務。spark支持2類共享變量,廣播變量,在每一個節點上保存一個值,累積變量支持累加操作。
2. spark初始化
spark應用程序首先應該創建JavaSparkContext對象
SparkConf conf = new SparkConf().setAppName(appName).setMaster(master); JavaSparkContext sc = new JavaSparkContext(conf);
appname設置顯示在集群UI上應用程序名,master是YARN集群的URL,或者字符串"local"表示運行本地模式。若采用spark-submit命令提交jar包,可由--master選項指定。
3. 創建RDD
RDD可以通過parallelizing一個驅動程序中已存在的集合,或者引用一個外部存儲系統,如HDFS,HBase創建
List<Integer> data = Arrays.asList(1, 2, 3, 4, 5); JavaRDD<Integer> distData = sc.parallelize(data, 20);
集合并行化的一個重要參數就是份數(slices),每一份數據將對應一個任務,spark默認會根據集群自動確定份數。
JavaRDD<String> distFile = sc.textFile("data.txt", 20);
如果文件名是本地文件系統,那么需要在所有工作節點的相同目錄下拷貝一份數據,或者采用網絡共享文件系統。所有的spark文件輸入方法也支持目錄,壓縮文件,通配符。默認情況下一個分塊(block)將對應一份(slice)。除了文本文件,spark還支持其它數據格式,如:JavaSparkContext.wholeTextFiles,SequenceFiles。
4. RDD操作支持兩種,變換(transformation)根據已經存在的數據集產生一個新的數據集,動作(action)在RDD上運行計算并向驅動程序返回一個值。例如:map就是一個transformation,將所有的數據元素通過一個函數,結果返回一個新的RDD,reduce就是一個action,采用某個函數聚合所有元素,向驅動程序返回一個結果。所有的transformation操作在調用后,并不會立即執行,只有當某個action需要向驅動程序返回一個結果時,才執行。這樣設計使得spark效率更高,例如在需要將一個RDD通過一個map,然后再使用reduce返回一個結果,這時就只需要向驅動程序返回reduce的結果,而不是更大的map后的數據集。默認RDD是不會一直存在于內存當中的,我們可以調用persist或cache方法持久化,也支持將RDD持久化入硬盤,或者備份到多個節點。
5. RDD transformation方法
map(T -> U) filter(T -> Boolean) flatMap(T -> Iterator<U>) mapPartitions(Iterator<T> -> Iterator<U>)
mapPartitionsWithIndex((int,Iterator<T>) -> Iterator<U>) ...
感謝各位的閱讀,以上就是“spark初始化怎么配置”的內容了,經過本文的學習后,相信大家對spark初始化怎么配置這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。