SlidingRDD

时间:2016-08-25 12:01:49

标签: scala apache-spark apache-spark-mllib sliding-window

我面临一个非常有趣的问题,可以表述如下:

给定String的RDD,计算连续行对的RDD。例如,如果输入是具有值“b”,“c”,“f”,“d”,“a”的RDD,则预期输出为(“a”,“b”),(“ b”, “C”),( “C”, “d”),( “d”, “F”)

我们可以通过应用以下代码轻松完成:

val sorted = input.sortByKey()
val output = RDDFunctions.fromRDD(sorted).sliding(2)

但使用slidingRDD非常耗时,所以我问自己是否有更好的方法可以解决这个问题。

编辑: 在我的电脑上使用以下代码

test("sliding"){
        val rdd = sqlContext.read
          .format("com.databricks.spark.csv")
          .option("header", "true")
          .option("inferSchema", "true")
          .option("mode", "FAILFAST")
          .option("delimiter", ";")
          .load(s"${testDataPath}filter/firstLastRand10x6.csv").select("first").sort("first").rdd

    val slidingRdd = RDDFunctions.fromRDD(rdd).sliding(2).collect()
  }

需要一段合理的时间(大约18秒),而当缓存rdd时,需要很长的时间(大约150秒)!这对我来说似乎很奇怪,因为我们应该避免在缓存时做两倍的血统。有人有解释吗?

我将输入文件放在此url

0 个答案:

没有答案