创建一个空的DStream

时间:2016-05-08 11:30:31

标签: apache-spark spark-streaming

如何创建像sc().emptyRDD()这样的新DStram。

我需要创建一个空的JavaPairDStream<String, String>来与另一个JavaPairDStream联合。我将在批次结束时填写此dstream以在新批次中使用联合。

完整要求是: 我想在阶段之间更新List。

  1. 我有一个由updateStateBykey()更新的RDD(密钥)。一些新的 键在每个批次中添加。
  2. 我加入(笛卡尔积)这个RDD和一些输入事件。
  3. 我计算结果并创建一个新的密钥RDD。
  4. 但需要在下一批微批次中更新此RDD。使用updateStateByKey不适用于此要求。所以我想在批处理开始时用newKeys加入这个更新的列表。

1 个答案:

答案 0 :(得分:2)

创建空DStream的一种方法是使用JavaStreamingContext.queueStream

val inputStream = ssc.queueStream(new mutable.Queue[RDD[String]])

但是,如果你需要保持DStream批次之间的状态,如@ z-star所述,可以使用PairDStreamFunctions.mapWithState形式的有状态DStream来实现Spark 1.6.x和以上,PairDStreamFunctions.updateStateByKey为较低版本。