spark大資料入門(三) RDD的簡單解析

2021-07-08 19:21:09 字數 1891 閱讀 2896

rdd是彈性分布式資料集的簡稱,她具有以下的優點:第一rdd具有並行化的操作特點,通俗的說,在rdd中存在一定數量的分片,每乙個分片都會對應乙個task,這些task是可以併發煩人執行。第二,rdd具有很好的容錯處理,這個特性是由rdd的血統依賴產生的,rdd1---->rdd2---->rdd3,這單個rdd一次又前面的那產生,同事rdd又具有不變的性質,當rdd3發生執行的錯誤,是可以由rdd2來直接再次生產。rdd的可以由兩種方法產生,第一,並行化當前程式中的資料集或者引用外部的資料集hdfs,hbase上面的資料集。

我們可以手動的建立乙個資料集合array,然後就spark會把資料集拷貝到集群上去,進行並行化的處理。這裡我們需要關心的是spark到底會把我們的資料集怎樣劃分呢?具體的會劃分成為多少個資料集呢?spark會在每乙個partition上面執行乙個task,你可以手動的設定這個並行化的個數,也可以讓spark自己來自動按照當前集群的硬體資訊來得到的。

val data = array(1, 2, 3, 4, 5)

val distdata = sc.parallelize(data)

spark可以在任何支援hadoop的輸入資料格式上建立分布是資料集例如cassandra, hbase。spark支援文字txt格式,二進位制格式,hadoopinputformat格式的資料輸入。

scala> val distfile = sc.textfile("data.txt")
這個資料集一旦被建立成功,spark就會在這個資料上進行相應的操作,例如去統計當前資料所有行的大小加起來。distfile.map(s => s.length).reduce((a, b) => a + b).。

後面我們再去詳細 的解釋這些高階函式的具體用處。

需要注意的是;first資料集引數必須是在每乙個worker node上具有相同的目錄,或者把當前的資料集拷貝到每乙個節點的目錄下面去。second,textfile這個函式是支援檔案目錄,壓縮檔案,文字檔案作為引數的。third,該函式還有乙個引數,並行化資料,你可以手動的新增,也可以讓spark根據集群的硬體資訊去選擇。

該是從spark的源**中擷取的。我們可以看到spark非常重要的三個特性,其中還包括兩個可選擇專案

我們可以看到最主要的三個是什麼,包括一系列的partition,每乙個partition都會有乙個相應的task去執行任務,作用於每乙個分片對應執行的函式體,為了容錯而產生的rdd依賴,這類分為寬依賴和窄依賴。其餘的兩個可算則專案partitioner,就是如何把相同的的key放到一塊,還有乙個為了提高執行的效率而產生的資料本地化,就是說找到當前rdd執行的最優位置。說了這麼多。我們來來看看rdd的源**吧

abstract class rdd[t: classtag](

@transient private var _sc: sparkcontext,

@transient private var deps: seq[dependency[_]]

) extends serializable with logging {

我們看到rdd是乙個抽象類。含有兩最主要的引數,sparkcontxet是外部程式進入spark的唯一通道。deps就是鎖對應的依賴,也就是上乙個rdd是什麼,由此形成了血統。我看一下下面的這個,是rdd中的各種方法,

第乙個方法comput:由子類去具體的實現,主要對應於rdd的第乙個特性,就是執行每乙個sparkrdd分片的函式。getpartitions函式就是得到對應rdd的分片。getdependces函式就是得到對應的依賴。getpreferedloactions就是得到最佳的執行位置。

Spark入門RDD操作

rdd resilient distributed datasets 彈性分布式資料集,是spark中的抽象資料結構型別,任何資料在spark中都被表示為rdd.從程式設計的角度來看,rdd可以簡單看成是乙個陣列.和普通陣列的區別是,rdd中的資料是分割槽儲存的,這樣不同分割槽的資料就可以分布在不同...

大資料學習筆記(六) Spark的RDD

建立 rdd是spark中的資料集,是唯讀的 rdd可以從集合,普通檔案系統,hdfs檔案系統中建立 scala建立rdd的方法 val lines1 sc.parallelize list aa bb val lines2 sc.textfile file opt spark readme.md ...

零基礎入門大資料之spark中rdd部分運算元詳解

我們知道,spark中乙個重要的資料結構是rdd,這是一種並行集合的資料格式,大多數操作都是圍繞著rdd來的,rdd裡面擁有眾多的方法可以呼叫從而實現各種各樣的功能,那麼通常情況下我們讀入的資料來源並非rdd格式的,如何轉換為rdd呢?乙個基本的方法是初始化,或者格式化操作函式parallelize...