【发布时间】:2017-05-09 18:48:06
【问题描述】:
我在 Scala 中编写了一个相对简单的 Spark 作业,它从 S3 读取一些数据,执行一些转换和聚合,最后将结果存储到存储库中。
在最后阶段,我有一个域模型的 RDD,我想将它们分组为元素块,以便我可以在我的存储库中进行一些大规模插入。
我使用RDDFunctions.sliding 方法来实现这一点,它几乎可以正常工作。这是我的代码的简化版本:
val processedElements: RDD[DomainModel] = _
RDDFunctions.fromRDD(processedElements)
.sliding(500, 500)
.foreach { elementsChunk =>
Await.ready(repository.bulkInsert(elementsChunk), 1.minute)
}
问题是,例如,如果我有 1020 个元素,那么我的存储库中只有 1000 个元素。如果窗口大小大于剩余元素的数量,看起来滑动会忽略任何其他元素。
有没有办法解决这个问题?如果没有,有没有其他方法可以在不使用RDDFunctions.sliding 的情况下实现相同的行为?
【问题讨论】:
标签: scala apache-spark apache-spark-mllib chunks