gpt4 book ai didi

apache-spark - groupByKey 与 hashPartitioner 和 mapPartitions?

转载 作者:行者123 更新时间:2023-12-04 04:45:35 26 4
gpt4 key购买 nike

所以,我有如下数据,

[ (1, data1), (1, data2), (2, data3), (1, data4), (2, data5) ]

我想将其转换为以下内容,以进行进一步处理。
[ (1, [data1, data2, data4]), (2, [data3, data5]) ]

一种方法是使用 groupByKey .另一种方法是使用 hashPartitioner 根据键对 RDD 进行分区。 ,然后使用 mapPartitions 处理每个键的值.哪种方法会更有效?

最佳答案

我不认为你可以使用 reduceByKey直接按照评论中的建议,但如果您映射 (Int, Object)配对到 (Int, List(Object))那么你就可以使用它了。我希望以下方法是最有效的方法之一,但真正实用的测试是了解哪种方法最适合您的特定用例的最佳方法。

object main extends App {

import org.apache.spark.{SparkContext, SparkConf}
import org.apache.spark.rdd.PairRDDFunctions

val conf = new SparkConf().setMaster("local").setAppName("example")
val sc = new SparkContext(conf)

val data = List((1, "data1"), (1, "data2"), (2, "data3"), (1, "data4"), (2, "data5"))

val rdd = sc.parallelize(data).mapValues(str => List(str)).reduceByKey((l1, l2) => l1 ::: l2)
rdd.collect().foreach{
case (key, list) => println(s"key: $key values: ${list.mkString(";")}")
}
sc.stop()
}

关于apache-spark - groupByKey 与 hashPartitioner 和 mapPartitions?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31925050/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com