Spark常用運算元講解一

2021-09-06 16:45:54 字數 2477 閱讀 1050

map是對rdd中的每個元素都執行乙個指定的函式來產生乙個新的rdd,rdd之間的元素是一對一關係。

>>> x = sc.parallelize([1,2,3,4])

>>> y = x.map(lambda x:(x**3))

>>> y.collect()

[1, 8, 27, 64]

對rdd元素進行過濾,返回乙個新的資料集,由經過func函式後返回值為true的原元素組成。

>>> y = x.filter(lambda x:x>2)

>>> y.collect()

[3, 4]

類似於map,但是每乙個輸入元素會被對映為0到多個輸入元素,rdd之間的元素是一對多關係。

>>> y = x.flatmap(lambda x:(x,x*100,x**2))

>>> y.collect()

[1, 100, 1, 2, 200, 4, 3, 300, 9, 4, 400, 16]

返回乙個rdd,它將每個分割槽中的所有元素合併到乙個列表中。資料集切分

>>> a = sc.parallelize([1,2,3,4],2)

>//第二個引數2,表示資料集切分的份數(slices)。spark將會在集群上為每乙份資料起乙個任務。

>>>> y = a.glom()

>>>> y.collect() [[1, 2], [3, 4]]

>>> xx = sc.parallelize([1,2,3,4], 2) 

>>> def f(iter): ...

yield sum(iter) ...

>>> print 'xx原來分割槽資訊:'.format(xx.glom().collect()) xx原來分割槽資訊:[[1, 2], [3, 4]]

>>> print 'xx經過f計算後的結果:{}'.format(yy.glom().collect()) xx經過f計算後的結果:[[3], [7]]

distinct將rdd中的元素進行去重操作

>>> res = sorted(sc.parallelize([1, 1, 1, 2, 3, 2, 3]).distinct().collect()) 

>>> print '去重後的結果:{}'.format(res) 去重後的結果:[1, 2, 3]

>>> rdd = sc.parallelize([1, 1, 2, 3])

>>> rdd1 = sc.parallelize([5, 3, 4, 6])

>>> print rdd.union(rdd1).collect()

[1, 1, 2, 3, 5, 3, 4, 6]

>>> rdd = sc.parallelize([1, 1, 2, 3])

>>> rdd1 = sc.parallelize([5, 3, 4, 6])

>>> print rdd.intersection(rdd1).collect()

[3]

返回兩個rdd的笛卡爾積。

笛卡爾積是什麼不懂得可以參考下面的微博

>>> rdd = sc.parallelize([1, 2])

>>> rdd_1 = sc.parallelize([3,4])

>>> rdd.cartesian(rdd_1).collect()

[(1, 3), (1, 4), (2, 3), (2, 4)]

groupby運算元接收乙個函式,這個函式返回的值作為key,然後通過這個key來對裡面的元素進行分組。

val a = sc.parallelize(1 to 9, 3)

a.groupby(x => ).collect

//返回的even或者odd字串作為key來group rdd裡面的值,

res42: array[(string, seq[int])] = array((even,arraybuffer(2, 4, 6, 8)), (odd,arraybuffer(1, 3, 5, 7, 9)))

val a = sc.parallelize(1 to 9, 3)

def myfunc(a: int) : int =

a.groupby(myfunc).collect //同樣的,返回的是0的時候,表示的是偶數值,返回的是1的時候表示的是奇數。

res3: array[(int, seq[int])] = array((0,arraybuffer(2, 4, 6, 8)), (1,arraybuffer(1, 3, 5, 7, 9)))

Spark 常用運算元

官網rdd操作指南 2 key value資料型別的transfromation運算元 三 連線 3 action運算元 val list list 1 2,3 sc.parallelize list map 10 foreach println 輸出結果 10 20 30 這裡為了節省篇幅去掉了換...

Spark常用運算元練習

package cn.allengao.exercise import org.apache.spark.class name package describe sparkrdd運算元練習 creat user allen gao creat date 2018 1 25 creat time 10...

Spark常用運算元 action

spark action常用運算元型別如下 1.collectasmap map k,v 二元組rdd轉為map資料型別 countbykey map k,long 統計rdd中每個key出現的次數,還回map型別表示每個key出現了幾次 countbyvalue map t,long 統計rdd中...