日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Spark RDD编程API

發布時間:2024/1/17 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spark RDD编程API 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

1. RDD的算子分類

  • Transformation(轉換):根據數據集創建一個新的數據集,計算后返回一個新RDD;例如:一個rdd進行map操作后生了一個新的rdd。

  • Action(動作):對rdd結果計算后返回一個數值value給驅動程序;?
    例如:collect算子將數據集的所有元素收集完成返回給驅動程序。

2. Transformation

RDD中的所有轉換都是延遲加載的,也就是說,它們并不會直接計算結果。相反的,它們只是記住這些應用到基礎數據集上的轉換動作。只有當發生一個要求返回結果給Driver的動作時,這些轉換才會真正運行。這種設計讓Spark更加有效率地運行。

常用的Transformation

轉換含義
map(func)返回一個新的RDD,該RDD由每一個輸入元素經過func函數轉換后組成
filter(func)返回一個新的RDD,該RDD由經過func函數計算后返回值為true的輸入元素組成
flatMap(func)類似于map,但是每一個輸入元素可以被映射為0或多個輸出元素(所以func應該返回一個序列,而不是單一元素)
mapPartitions(func)類似于map,但獨立地在RDD的每一個分片上運行,因此在類型為T的RDD上運行時,func的函數類型必須是Iterator[T] => Iterator[U]
mapPartitionsWithIndex(func)類似于mapPartitions,但func帶有一個整數參數表示分片的索引值,因此在類型為T的RDD上運行時,func的函數類型必須是(Int, Interator[T]) => Iterator[U]
union(otherDataset)對源RDD和參數RDD求并集后返回一個新的RDD
intersection(otherDataset)對源RDD和參數RDD求交集后返回一個新的RDD
distinct([numTasks]))對源RDD進行去重后返回一個新的RDD
groupByKey([numTasks])在一個(K,V)的RDD上調用,返回一個(K, Iterator[V])的RDD
reduceByKey(func, [numTasks])在一個(K,V)的RDD上調用,返回一個(K,V)的RDD,使用指定的reduce函數,將相同key的值聚合到一起,與groupByKey類似,reduce任務的個數可以通過第二個可選的參數來設置
sortByKey([ascending], [numTasks])在一個(K,V)的RDD上調用,K必須實現Ordered接口,返回一個按照key進行排序的(K,V)的RDD
sortBy(func,[ascending], [numTasks])與sortByKey類似,但是更靈活
join(otherDataset, [numTasks])在類型為(K,V)和(K,W)的RDD上調用,返回一個相同key對應的所有元素對在一起的(K,(V,W))的RDD
cogroup(otherDataset, [numTasks])在類型為(K,V)和(K,W)的RDD上調用,返回一個(K,(Iterable,Iterable))類型的RDD
coalesce(numPartitions)減少 RDD 的分區數到指定值。
repartition(numPartitions)重新給 RDD 分區
repartitionAndSortWithinPartitions(partitioner)重新給 RDD 分區,并且每個分區內以記錄的 key 排序

3. Action

動作含義
col 3 isright-aligned
reduce(func)reduce將RDD中元素前兩個傳給輸入函數,產生一個新的return值,新產生的return值與RDD中下一個元素(第三個元素)組成兩個元素,再被傳給輸入函數,直到最后只有一個值為止。
collect()在驅動程序中,以數組的形式返回數據集的所有元素
count()返回RDD的元素個數
first()返回RDD的第一個元素(類似于take(1))
take(n)返回一個由數據集的前n個元素組成的數組
takeOrdered(n, [ordering])返回自然順序或者自定義順序的前 n 個元素
saveAsTextFile(path)將數據集的元素以textfile的形式保存到HDFS文件系統或者其他支持的文件系統,對于每個元素,Spark將會調用toString方法,將它裝換為文件中的文本
saveAsSequenceFile(path)將數據集中的元素以Hadoop sequencefile的格式保存到指定的目錄下,可以使HDFS或者其他Hadoop支持的文件系統。
saveAsObjectFile(path)將數據集的元素,以 Java 序列化的方式保存到指定的目錄下
countByKey()針對(K,V)類型的RDD,返回一個(K,Int)的map,表示每一個key對應的元素個數。
foreach(func)在數據集的每一個元素上,運行函數func
foreachPartition(func)在數據集的每一個分區上,運行函數func

總結

以上是生活随笔為你收集整理的Spark RDD编程API的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。