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