如何将Spark Dstream元素添加到ArrayBuffer中

时间:2017-09-25 08:19:29

标签: scala apache-spark spark-streaming

我想将dstream元素添加到ArrayBuffer以进行进一步的处理。但是它不能工作。

var newBatchMeter = new ArrayBuffer[String]()

newBatchReadingDstream.foreachRDD( rdd => {
  for(item <- rdd.collect()) {
    newBatchMeter += item.ID
  }
})

newBatchMeter.foreach(println)

1 个答案:

答案 0 :(得分:0)

这不起作用的原因是foreach子句在worker中执行,并且您的数组缓冲区在驱动程序上声明。 收集DStream将无效,因为它是一个无限的流,您可以将数据保存到文件中,然后将它们加载到ArrayBuffer中。

我认为最好的方法是找到一种方法来使用DStream原语对ArrayBuffer进行处理

类似的东西:

newBatchReadingDstream.map(item => item.ID)