spark零基礎學習路線指導
阿新 • • 發佈:2018-12-25
問題導讀
1.你認為spark該如何入門?
2.你認為spark入門程式設計需要哪些步驟?
3.本文介紹了spark哪些程式設計知識?
spark學習一般都具有hadoop基礎,所以學習起來更容易多了。如果沒有基礎,可以參考零基礎學習hadoop到上手工作線路指導(初級篇)。具有基礎之後,一般都是按照官網或則視訊、或則文件,比如搭建spark,執行spark例子。後面就不知道做什麼了。這裡整體梳理一下。希望對大家有所幫助。
1.spark場景
在入門spark之前,首先對spark有些基本的瞭解。比如spark場景,spark概念等。推薦參考
Spark簡介:適用場景、核心概念、建立RDD、支援語言等介紹
http://www.aboutyun.com/forum.php?mod=viewthread&tid=9389
2.spark部署
首先還是說些基礎性的內容,非零基礎的同學,可以跳過。
首先還是spark環境的搭建。
about雲日誌分析專案準備6:Hadoop、Spark叢集搭建
http://www.aboutyun.com/forum.php?mod=viewthread&tid=20620
spark環境搭建完畢,例子執行完畢。後面就不知道幹啥了。
這時候我們就需要了解spark。
從不同角度,可以有多種不同的方式:如果我們從實戰工作的角度,下面我們就需要了解開發方面的知識
如果我們從知識、理論的角度,我們就需要了解spark生態系統
下面我們從不同角度來介紹
3.spark實戰
3.1spark開發環境
比如我們從實戰的角度,當我們部署完畢,下面我們就可以接觸開發方面的知識。
對於開發,當然是首先是開發工具,比如eclipse,IDEA。對於eclipse和IDEA兩個都有選擇的,看你使用那個更順手些。
相關資料推薦
Spark整合開發環境搭建-eclipse
http://www.aboutyun.com/forum.php?mod=viewthread&tid=6772
用IDEA開發spark,原始碼提交任務到YARN
http://www.aboutyun.com/forum.php?mod=viewthread&tid=20316
更多:
Spark1.0.0 開發環境快速搭建
http://www.aboutyun.com/forum.php?mod=viewthread&tid=8403
spark開發環境中,如何將原始碼打包提交到叢集
http://www.aboutyun.com/forum.php?mod=viewthread&tid=20979
田毅-Spark開發及本地環境搭建指南
http://www.aboutyun.com/forum.php?mod=viewthread&tid=20313
Spark 開發環境IntelliJ IDEA圖文教程、視訊系統教程
http://www.aboutyun.com/forum.php?mod=viewthread&tid=10122
3.2spark開發基礎
開發環境中寫程式碼,或則寫程式碼的時候,遇到個嚴重的問題,Scala還不會。這時候我們就需要補Scala的知識。如果是會Java或則其它語言,可能會閱讀C,.net,甚至Python,但是Scala,你可能會遇到困難,因為裡面各種符號和關鍵字,所以我們需要真正的學習下Scala。下面內容,是個人的總結,僅供參考
#######################
about雲spark開發基礎之Scala快餐
http://www.aboutyun.com/forum.php?mod=viewthread&tid=20303
spark開發基礎之從Scala符號入門Scala
http://www.aboutyun.com/forum.php?mod=viewthread&tid=20159
spark開發基礎之從關鍵字入門Scala
http://www.aboutyun.com/forum.php?mod=viewthread&tid=20223
更多內容:
spark開發基礎之Scala快餐:開發環境Intellij IDEA 快捷鍵整理【收藏備查】
http://www.aboutyun.com/forum.php?mod=viewthread&tid=20380
學習Scala的過程中,參考了以下資料
《快學Scala》完整版書籍分享
http://www.aboutyun.com/forum.php?mod=viewthread&tid=8713
scala入門視訊【限時下載】
http://www.aboutyun.com/forum.php?mod=viewthread&tid=12434
更多可以搜尋Scala
http://so.aboutyun.com/
#######################
相信上面的資料,足以讓你搞懂Scala。Scala會了,開發環境、程式碼都寫好了,下面我們就需要打包了。該如何打包。這裡打包的方式有兩種:
1.maven
2.sbt
有的同學要問,哪種方式更好。其實兩種都可以,你熟悉那個就使用那個即可。
下面提供一些資料
scala eclipse sbt( Simple Build Tool) 應用程式開發
http://www.aboutyun.com/forum.php?mod=viewthread&tid=9340
使用maven編譯Spark
http://www.aboutyun.com/forum.php?mod=viewthread&tid=11746
更多資料
Spark大師之路:使用maven編譯Spark
http://www.aboutyun.com/forum.php?mod=viewthread&tid=10842
用SBT編譯Spark的WordCount程式
http://www.aboutyun.com/forum.php?mod=viewthread&tid=8587
如何用maven構建spark
http://www.aboutyun.com/forum.php?mod=viewthread&tid=12261
3.3spark開發知識
spark 開發包括spark core的相關元件及運算,還有spark streaming,spark sql,spark mlib,GraphX.
3.3.1spark 程式設計
說到spark程式設計,有一個不能繞過的SparkContext,相信如果你接觸過spark程式,都會見到SparkContext。那麼他的作用是什麼?
SparkContext其實是連線叢集以及獲取spark配置檔案資訊,然後執行在叢集中。如下面程式可供參考
[Scala] 純文字檢視 複製程式碼 ?
1 2 3 4 5 6 7 |
import
org.apache.spark.SparkConf
import
org.apache.spark.SparkContext
val
conf =
new
SparkConf().setAppName(“MySparkDriverApp”).setMaster(“spark : //master:7077”).set(“spark.executor.memory”,
“2g”)
val
sc =
new
SparkContext(conf)
|
下面圖示為SparkContext作用
當然還有 SQLContext 和HiveContext作用是類似的,同理還有hadoop的Context,它們的作用一般都是全域性的。除了SparkContext,還有Master、worker、DAGScheduler、TaskScheduler、Executor、Shuffle、BlockManager等,留到後面理論部分。這裡的入門更注重實戰操作
我們通過程式碼連線上叢集,下面就該各種記憶體運算了。
比如rdd,dataframe,DataSet。如果你接觸過spark,相信rdd是經常看到的,DataFrame是後來加上的。但是他們具體是什麼。可以詳細參考spark core元件:RDD、DataFrame和DataSet介紹、場景與比較
http://www.aboutyun.com/forum.php?mod=viewthread&tid=20902
看到上面我們其實可能對它們還沒有認識到本質,其實他們就是記憶體的資料結構。那麼資料結構相信我們應該都瞭解過,最簡單、我們經常接觸的就是陣列了。而rdd,跟陣列有一個相同的地方,都是用來裝資料的,只不過複雜度不太一樣而已。對於已經瞭解過人來說,這是理所當然的。這對於初學者來說,認識到這個程度,rdd就已經不再神祕了。那麼DataFrame同樣也是,DataFrame是一種以RDD為基礎的分散式資料集.
rdd和DataFrame在spark程式設計中是經常用到的,那麼該如何得到rdd,該如何建立DataFrame,他們之間該如何轉換。
建立rdd有三種方式,
1.從scala集合中建立RDD
2.從本地檔案系統建立RDD
3.從HDFS建立RDD
詳細參考
spark小知識總結
http://www.aboutyun.com/forum.php?mod=viewthread&tid=20920
如何建立dataframe
df<-data.frame(A=c(NA),B=c(NA))
當然還可以通過rdd轉換而來,通過toDF()函式實現
rdd.toDF()
dataframe同樣也可以轉換為rdd,通過.rdd即可實現
如下面
val rdd = df.toJSON.rdd
為了更好的理解,在看下面例子
[Scala] 純文字檢視 複製程式碼