Spark Streaming和Spark结构化Streaming是否使用相同的微批处理引擎?

时间:2019-02-01 03:29:02

标签: apache-spark spark-streaming spark-structured-streaming

Spark流和Spark结构化流是否使用相同的微批处理调度程序引擎? Spark结构化流的延迟是否比Spark流低?

2 个答案:

答案 0 :(得分:1)

  

Spark流和Spark结构化流是否使用相同的微批处理调度程序引擎

当然不是。它们在内部有所不同,但是在流和记录方面具有相同的高级概念。

在Spark结构化流传输中,您可以使用DataStreamWriter.foreachDataStreamWriter.foreachBatch方法获得与Spark流式传输一样的效果。

主要区别在于如何描述流传输管道。在Spark Structured Streaming中,您可以使用Spark SQL的Dataset API,而Spark Streaming可以选择Spark Core的RDD API。两者最终都是基于RDD的计算,但Spark SQL使用了更高级别的抽象(例如Dataset API)。

执行它们都使用一个“微批次调度引擎”?是的,但是Spark结构化流正在尝试利用一些可以连续查询的数据源(并且不进行微批处理)。

  

Spark结构化流的延迟是否小于Spark流?

这会是很难回答。 Spark Streaming的创建者决定开发Spark结构化Streaming,并希望在查询性能和表达能力上更好。不再建议使用Spark Streaming。

答案 1 :(得分:0)

结构化流主要是一种更高级别的抽象,它允许您定义流逻辑,然后使用Spark SQL引擎在同一微批处理引擎上执行。

默认情况下,结构化流使用微批处理引擎,但是,如果您使用的是Spark 2.3+,则可以使用连续模式,在这种情况下,您可以降低1 millisecond的延迟时间