当调用reduceByKey操作时,它正在接收特定键的值列表。我的问题是:
答案 0 :(得分:0)
0.1。不,这将完全违背减少操作的整个要点 - 即通过利用关联性和可交换性将操作并行化为任意的子操作树。
0.2。你需要通过组合整数monoid和你正在做的事来定义一个新的monoid。我们假设您的操作是op
yourRdd.map(kv => (kv._1, (kv._2, 1)))
.reduceByKey((left, right) => (left._1 op right._1, left._2 + right._2))
将为您提供RDD[(KeyType, (ReducedValueType, Int))]
,其中Int
将是每个密钥收到的reduce值。
0.3。你必须对第一个四分位数的含义更加具体。鉴于1.的答案是否定的,那么你必须有一个定义第一个四分位数的边界,然后你不需要对数据进行排序,因为你可以按该边界过滤掉这些值。