我正在学习Spark和Scala,并不断遇到这种模式:
val lines = sc.textFile("data.txt")
val pairs = lines.map(s => (s, 1))
val counts = pairs.reduceByKey((a, b) => a + b)
虽然我理解它的作用,但我不明白为什么使用它而不是像:
val lines = sc.textFile("data.txt")
val counts = lines.reduceByValue((v1, v2) => v1 + v2)
鉴于Spark旨在有效地处理大量数据,总是必须执行额外的步骤,将列表转换为映射,然后通过键减少,而不是简单地按值减少?