rdd(resilient distributed dataset):彈性分布式資料集
rdd就是乙個不可變的分布式物件集合。每個rdd都被分為多個分割槽,這些分割槽執行在集群中的不同節點。使用者可以通過2中方法建立rdd:
1)讀取乙個外部資料集
sc.textfile("test.txt")
2)在驅動器程式裡分發驅動器程式中的物件集合(比如list和set)
sc.parallelize(["pandas", "i like pandas"])
rdd支援兩種型別的操作:
1)轉化操作:由乙個rdd生成乙個新的rdd
val inputrdd = sc.textfile("log.txt")
val errorrdd = inputrdd.filter(line => line.contains("error"))
2)行動操作:對rdd計算出乙個結果,並把結果返回到驅動器程式或把結果儲存到外部儲存系統
inputrdd.first()
轉化操作和行動操作區別在於spark只會惰性的進行轉化操作,它們只有第一次在乙個行動操作中用到時,才會真正計算。比如上面例子中textfile()和filter()方法實際並沒有真正執行,只有當執行first()是,textfile()和filter()方法才會真正執行。這也可以很好理解,如果log.txt檔案非常大,那在執行textfile()方法是就會消耗很多儲存空間,而在後面filter()就要篩選很多資料。
1.轉化操作
以rdd ={1,2,3,4}的一組資料為例
1)map():將函式應用於rdd中的每個元素,並返回值構成新的rdd。
rdd.map(x => x + 1)
返回結果:
2)flatmap():將函式應用與rdd中的每個元素,將返回的迭代器的所有內容構成新的rdd。通常用來切分單詞。
rdd.flatmap(x => x.to(3))
返回結果:
3)filter():返回乙個由通過傳給filter()的函式的元素組成的rdd
rdd.filter(x => x != 1)
返回結果:
4)distinct():去重
rdd.distinct()
返回結果:
以rdd2 =和rdd3=的兩組資料為例
5)union():生成乙個包含兩個rdd中的所有元素的rdd
rdd1.union(rdd2)
返回結果:
6)intersection():求兩個rdd共同的元素的rdd
rdd1.intersection(rdd2)
返回結果:
7)substract():移除乙個rdd中的內容
rdd1.substract(rdd2)
返回結果:
8)cartesian():與另乙個rdd的笛卡爾積
rdd1.cartesian(rdd2)
返回結果: Spark快速大資料分析 第三章RDD程式設計2
初始化 sparkconf val conf newsparkconf setmaster local val sc newsparkcontext conf 輸入文字 val lines sc.parallelize list 1 2,3 3 返回所有 val collect lines.coll...
Spark 大資料分析 介紹
spark的基本原理 executor worker task jobstage dagscheduler taskscheduler rdd一些疑問 一些結論 spark是乙個以複雜計算為核心的大資料分析框架,是mapreduce的 後繼者 具備高效性 通用性等特點。spark最初在2009年由加...
spark快速大資料分析之學習記錄(四)
題外話 這是乙個 主要用於記錄並監督我每週的spark學習程序 一 初始化sparkcontext 基於python 1.新建乙個py檔案,用於存放python指令碼 備註 我在桌面建了乙個資料夾py,主要用來存放python指令碼 shell命令 sudo vim test.py 然後在test....