Spark快速大資料分析 RDD程式設計

2021-07-25 02:37:12 字數 1627 閱讀 3994

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....