使用Spark DataFrames进行有状态流处理

时间:2016-10-03 13:05:05

标签: scala apache-spark apache-spark-sql spark-streaming spark-dataframe

是否可以使用Spark DataFrame API实现有状态流处理?我想尝试的第一件事是对流进行重复数据删除。 DStreammapWithState方法,但为了将其转换为DataFrame,我必须使用foreachRDD

dStream foreachRDD { rdd =>
  val df = spark.read.json(rdd)
  // Need to join with the state somehow
  val unique = deduplicate(df)
  val result = myFancyProcessingMethod(unique)
  publish(result)
}

但是现在我们已经进入了一个没有流的概念(因此,它的状态)的领域,而且我被卡住了。

我能想到的唯一解决方案是重复数据删除原始DStream,然后才将其转换为DataFrames。这有几个缺点:我必须解析JSON两次,算法本身可以更有效地在DataFrame中实现(如果它是一次性任务)等等。还有其他方法吗?

0 个答案:

没有答案