1. 程式人生 > >spark快速大數據分析學習筆記(1)

spark快速大數據分析學習筆記(1)

spark 相關 自動創建 error 計算 創建 原本 con pac

本文是《spark快速大數據分析學習》第三章學習筆記,文中大量摘抄書中原本,僅為個人學習筆記。

RDD基礎:

RDD是一個不可變的分布式對象集合。每個RDD都被分為多個分區,這個分區運行在集群的不同節點上。RDD可以包含Python、Java、Scala中任意類型的對象。

創建RDD的方式:

讀取一個外部數據集,或者在驅動器程序裏分發驅動器程序中的對象集合,例如list和set。

RDD支持兩種類型的操作:

轉換操作和行動操作。轉換操作的時候只會惰性的求值,只有行動操作的時候才會真正的求值。轉化操作返回的是RDD,行動操作返回的是其他的數據類型。 從上層來看,每個spark應用都由一個驅動器程序來發起集群上的各種並行操作。驅動器程序包換應用的main函數,並且定義了集群上的分布式數據集,還對這些分布式數據集應用了相關操作。spark shell本身就是驅動器,你只要輸入你想要的操作就可以了。驅動器程序通過一個sparkcontext對象來訪問spark,這個對象對象代表著對計算集群的一個連接,shell啟動時自動創建一個sparkcontext對象,是一個叫做sc的變量。

創建RDD:

1、將程序已有的集合傳給SparkContext的parallelize()方法,這種方法需要你的整個數據集先放在一臺機器的內存中。
val lines = sc.parallelize(List("pandas","i like pandas")) #val定義一個常量
返回結果:lines: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[0] at parallelize at <console>:24
2、從外部存儲中讀取數據來創建RDD
val lines = sc.textFile("/user/yz_dw3_pro/test/READme.md")
返回結果:lines: org.apache.spark.rdd.RDD[String] = /user/yz_dw3_pro/test//READme.md MapPartitionsRDD[2] at textFile at <console>:24

RDD轉化操作:

val inputRDD = sc.textFile("/user/yz_dw3_pro/test/READme.md")
val errorRDD = inputRDD.filter(line => line.contains("error"))
返回結果:errorRDD: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[8] at filter at <console>:26

RDD行動操作:

println("input number is"+ inputRDD.count() +"numbers")
println("Here is 3 examples:")
inputRDD.take(3).foreach(println)
輸出結果:input number is5numbers
     Here is 3 examples:
     Ilike python
     Ilike python
     Ilike python
inputRDD.collect().foreach(println) #collect收集整個RDD的數據,保證在單臺機器的內存中能放得下時,才能使用 inputRDD.persist() #persist操作會把這個RDD緩存下來

spark快速大數據分析學習筆記(1)