Spark流和Spark结构化流是否使用相同的微批处理调度程序引擎? Spark结构化流的延迟是否比Spark流低?
答案 0 :(得分:1)
Spark流和Spark结构化流是否使用相同的微批处理调度程序引擎
当然不是。它们在内部有所不同,但是在流和记录方面具有相同的高级概念。
在Spark结构化流传输中,您可以使用DataStreamWriter.foreach
或DataStreamWriter.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
的延迟时间>