我有一个 ( String, Iterable[(String, String)] ) 的 JavaPairRDD,我希望将其转换为 ( String, RDD[String, String ]) 的 JavaPairRDD,这样我就可以使用 reduceByKey 函数到内部Java对RDD。
在此示例中,我有一个 JavaPairRDD,其中 key 是特定型号,value 是元组项目编号和该项目价格的 Iterable。
以下是 JavaPairRDD 的示例:
("Model1", Iterable(("1234", "55.00"), ("5678", "52.50"), ("91011", "551.65"))
("Model2", Iterable(("6546", "55.00"), ("6798", "1255.05"), ("98797", "500.65"))
应用 reduceByKey 函数后,我希望结果如下所示:
("Model1", JavaPairRDD(("1234", "55.00"), ("5678", "52.50"), ("91011", "551.65"))
("Model2", JavaPairRDD(("6546", "55.00"), ("6798", "1255.05"), ("98797", "500.65"))
一个非常相似的线程使用以下 Scala 代码转换了这个 RDD: How to convert an Iterable to an RDD
("To", List(("Tom",50),("Tod","30"),("Tom",70),("Tod","25"),("Tod",15))
("Ja", List(("Jack",50),("James","30"),("Jane",70),("James","25"),("Jasper",15))
rdd.flatMap{case(key, list) => list.map(item => ((key,item._1), item._2))}
.reduceByKey(_+_)
.map{case((key,name),hours) => (key, List((name, hours)))}
.reduceByKey(_++_)
在Java中有类似的方法吗?
谢谢你的帮助。