栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【RDD】Pair RDD Functions

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【RDD】Pair RDD Functions

Spark用几个函数定义了PairRDDFunctions类来操作Pair RDD或RDD key-value pair。当需要应用像hash partition, set operations, joins等transformations时,Pair RDD就派上了用场。

val rdd = spark.sparkContext.parallelize(
      List("Germany India USA","USA India Russia","India Brazil Canada China")
    )
 val wordsRdd = rdd.flatMap(_.split(" "))
 val pairRDD = wordsRdd.map(f=>(f,1))
 pairRDD.foreach(println)

这段代码通过在RDD中的每个元素上按空格分割来创建pair RDD,并将其拉平,在RDD中的每个元素上形成一个单词字符串,最后为每个单词分配一个整数“1”,运行结果如下:

(Germany,1)
(India,1)
(USA,1)
(USA,1)
(India,1)
(Russia,1)
(India,1)
(Brazil,1)
(Canada,1)
(China,1)

distinct – Returns distinct keys.
pairRDD.distinct().foreach(println)

//Prints below output
(Germany,1)
(India,1)
(Brazil,1)
(China,1)
(USA,1)
(Canada,1)
(Russia,1)
sortByKey – Transformation returns an RDD after sorting by key
println("Sort by Key ==>")
val sortRDD = pairRDD.sortByKey()
sortRDD.foreach(println)

//输出如下:
Sort by Key ==>
(Brazil,1)
(Canada,1)
(China,1)
(Germany,1)
(India,1)
(India,1)
(India,1)
(Russia,1)
(USA,1)
(USA,1)
reduceByKey – Transformation returns an RDD after adding value for each key.

结果RDD包含唯一key

println("Reduce by Key ==>")
val wordCount = pairRDD.reduceByKey((a,b)=>a+b)
wordCount.foreach(println)

以上通过为value求和聚合了keys,输出如下:

Reduce by Key ==>
(Brazil,1)
(Canada,1)
(China,1)
(USA,2)
(Germany,1)
(Russia,1)
(India,3)

aggregateByKey – Transformation same as reduceByKey

这部分没懂,下次补充。

参考文献

Spark Pair RDD Functions - Spark by {Examples}

Scala中下划线“_”的用法小结 - 简书

细数Scala下划线“_”的用法_菜刚的博客-CSDN博客

Scala中_(下划线)的常见用法 - 简书


What are all the uses of an underscore in Scala? - Stack Overflow

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1007866.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号