Scala RDD建立,轉換操作和行動操作

2021-10-09 22:07:06 字數 1619 閱讀 9482

兩種方式建立:

一:外部資料集。,從本地檔案載入資料集,或者從hdfs檔案系統

scala>

val lines = sc.textfile(

"file:///usr/local/spark/mycode/rdd/word.txt"

)lines: org.apache.spark.rdd.rdd[

string

]= file:

/

二:呼叫sparkcontext的parallelize方法,在driver中乙個已經存在的集合上建立。

例如:

val list = list(

"i like hadoop"

,"spark is fast"

,"i like spark"

)val rdd = sc.parallelize(list)

val rdd1 = rdd.flatmap(line => line.split(

" ")

)val rdd2 = rdd1.map(line =>

(line,1)

)val rdd3 = rdd2.reducebykey(

(a,b)

=> a+b)

rdd3.collect

轉換操作:

每一次轉換操作都會產生不同的rdd,轉換得到的rdd是惰性求值的,轉換過程只是記錄了轉換的軌跡,並不會發生真正的計算,只有遇到行動操作時,才會發生真正的計算。

filter(func):篩選出滿足函式func的元素,並返回乙個新的資料集

map(func):將每個元素傳遞到函式func中,並將結果返回為乙個新的資料集

flatmap(func):與map()相似,但每個輸入元素都可以對映到0或多個輸出結果

groupbykey():應用於(k,v)鍵值對的資料集時,返回乙個新的(k, iterable)形式的資料集

reducebykey(func):應用於(k,v)鍵值對的資料集時,返回乙個新的(k, v)形式的資料集,其中的每個值是將每個key傳遞到函式func中進行聚合

行動操作:

行動操作是真正觸發計算的地方。spark程式執行到行動操作時,才會執行真正的計算,從檔案中載入資料,完成一次又一次轉換操作,最終,完成行動操作得到結果。

count(): 返回資料集中的元素個數

collect(): 以陣列的形式返回資料集中的所有元素

first(): 返回資料集中的第乙個元素

take(n): 以陣列的形式返回資料集中的前n個元素

reduce(func): 通過函式func(輸入兩個引數並返回乙個值)聚合資料集中的元素

foreach(func): 將資料集中的每個元素傳遞到函式func中執行*

棧操作和進製轉換

棧操作及數進製轉換的實現 將十進位制轉換成二進位制 只考慮整數 棧的基本操作包括 初始化棧 入棧 出棧 判定棧空 判定棧滿 取棧頂元素等 從數制轉換示例可以看出,十進位制數轉換成相應二進位制數可使用棧存放,再依次彈出棧頂元素輸出,即可得到相應二進位制結果。棧的結構設定 typedef int dat...

RDD操作建立RDD,轉換操作

學習完廈門大學資料庫spark課程總結 rdd是面對物件的檔案集合,類似於dataframe的一行資料,建立rdd有很多種模式 lines sc.textfile file usr local spark 檔案目錄位址 注意sc是sparkcontext縮寫可能需要import一下,這是從本地檔案建...

浮點數移位操作和型別轉換問題

y0 regioninfolist i minx mat 3 regioninfolist i miny mat 0 mat 2 mat 3 mat 0 mat 5 mat 1 mat 3 mat 0 mat 4 x0 regioninfolist i minx mat 4 regioninfoli...