groupByKey按键有数百万行

时间:2014-10-30 10:38:36

标签: apache-spark

上下文:

  • 按键聚合,按键可能有数百万行。
  • 在行中添加功能。要做到这一点,我们必须知道前一行(按键和时间戳)。目前我们使用groupByKey并在Iterable上完成工作。

我们尝试过:

  • 向执行程序/驱动程序添加更多内存
  • 更改分区数

更改允许执行程序/驱动程序的内存工作。它只按键工作10k或10万行。那将来可能发生的数百万行关键怎么办。

似乎在这类问题上有一些工作:https://github.com/apache/spark/pull/1977

但它是PySpark特有的,而不是我们目前使用的Scala API

我的问题是:

  • 等待处理此类问题的新功能是否更好 知道我必须专门在PySpark工作的问题?
  • 另一种解决方案是使用一些特定的键来实现工作流程,这些值可以满足我的需求。任何设计模式。例如,需要按键和时间戳来预先添加句点吗?

1 个答案:

答案 0 :(得分:1)

我认为有问题的改变只会使PySpark更像主API。您可能不希望设计一个工作流程,无论如何,每个密钥都需要大量的值。除了以不同方式设计之外,没有其他解决方法。

我没有尝试过这个,我只相当肯定这种行为是有保证的,但是,也许你可以sortBy对整个数据集进行时间戳,然后是foldByKey。您提供了一个将前一个值合并为下一个值的函数。这应该通过时间戳遇到数据。所以你每次都会看到行t,t + 1,并且每次都可以按照你喜欢的方式添加第t + 1行。