上下文:
我们尝试过:
更改允许执行程序/驱动程序的内存工作。它只按键工作10k或10万行。那将来可能发生的数百万行关键怎么办。
似乎在这类问题上有一些工作:https://github.com/apache/spark/pull/1977
但它是PySpark特有的,而不是我们目前使用的Scala API
我的问题是:
答案 0 :(得分:1)
我认为有问题的改变只会使PySpark更像主API。您可能不希望设计一个工作流程,无论如何,每个密钥都需要大量的值。除了以不同方式设计之外,没有其他解决方法。
我没有尝试过这个,我只相当肯定这种行为是有保证的,但是,也许你可以sortBy
对整个数据集进行时间戳,然后是foldByKey
。您提供了一个将前一个值合并为下一个值的函数。这应该通过时间戳遇到数据。所以你每次都会看到行t,t + 1,并且每次都可以按照你喜欢的方式添加第t + 1行。