【发布时间】:2014-09-09 17:26:12
【问题描述】:
Spark 的 RDD 中的两个 groupBy 方法声明为:
def groupBy[K](f: T => K)(implicit kt: ClassTag[K]): RDD[(K, Iterable[T])]
def groupBy[K](f: T => K, numPartitions: Int)(implicit kt: ClassTag[K]): RDD[(K, Iterable[T])]
我将函数 f 定义为:
def f(x: Int): Int = x % 2
我可以将f 传递给第一个groupBy 作为rdd.groupBy(f)。
为什么我不能将 f 传递给第二个 groupBy 作为 rdd.groupBy(f, 10) ?我必须使用rdd.groupBy(f(_), 10) 或rdd.groupBy(x => f(x), 10)。
【问题讨论】:
-
出现问题是因为 Scala 中的方法 (
def) 和函数之间存在根本区别。看看这个答案,看看他们是如何互动的:stackoverflow.com/a/2394063/58808 -
试试
rdd.groupBy(f _, 10) -
此 q/a 包含有关该主题的有用信息。值得一读:stackoverflow.com/questions/17324247/…
标签: scala apache-spark rdd