0

当调用 reduceByKey 操作时,它正在接收特定键的值列表。我的问题是:

  1. 它接收到的值列表是按排序顺序排列的吗?
  2. 是否有可能知道它收到了多少值?
  3. 我正在尝试计算reduceByKey 中键值列表的第一个四分位数。这可以在reduceByKey中做到吗?
4

1 回答 1

0

.1。不,这完全违背了reduce操作的全部要点——即通过利用关联性和交换性将一个操作并行化为任意的子操作树。

.2. 您需要通过组合整数幺半群以及您所做的任何事情来定义一个新的幺半群。假设您的操作是opthen 。

yourRdd.map(kv => (kv._1, (kv._2, 1)))
.reduceByKey((left, right) => (left._1 op right._1, left._2 + right._2))

将为您提供一个RDD[(KeyType, (ReducedValueType, Int))]whereInt将是 reduce 为每个键收到的值的数量。

.3. 您必须更具体地说明第一个四分位数的含义。鉴于 1. 的答案是否定的,那么您将必须有一个定义第一个四分位数的界限,然后您不需要对数据进行排序,因为您可以通过该界限过滤掉值。

于 2014-08-01T07:36:06.847 回答