我有一个数字列表,想计算该列表中连续数字的差。我正在Apache Spark中开发RDD。
示例:
Input: [1,2,5,7,8,10,13,17,20,20,21]
Output: [1,3,2,1,2,3,4,3,0,1]
我想知道在不复制输入RDD的情况下使用mapreduce范式是否可行。
您可以使用org.apache.spark.mllib.rdd.RDDFunctions.sliding
。
通过在其父RDD的项目上传递一个滑动窗口,将其分组为固定大小的块,从而返回RDD。排序首先基于分区索引,然后是每个分区内项目的排序。这类似于Scala集合中的滑动,只是如果窗口大小大于项目总数,它就会变成一个空的RDD。如果父RDD有多个分区,并且窗口大小大于1,则需要触发Spark作业。