我们知道 Flink 是一个真正的实时流处理引擎,它可以在记录到达时处理它们,我们也知道 Spark Streaming 是一个微批处理流处理引擎。
但是我们也知道 spark 发布了结构化流,怎么样?是不是也像 Flink 一样是真正的实时流处理引擎,可以在记录到达时立即处理,而不是微批处理或仍然使用微批处理模式?
最佳答案
Is Structured Streaming real-time stream processing engine?
TL;DR 不是。或者是。取决于“实时流处理引擎”的定义。
直到 2.3.0-SNAPSHOT(当前 master),结构化流式处理使用微批处理,似乎没有任何迹象表明它在未来的版本中会有所不同。
深入了解结构化流的流查询引擎
StreamExecution (流式查询的执行环境)starts a separate thread of execution检查新记录是否可用。
一旦启动,microBatchThread
(它是常规 Java 的 java.lang.Thread
对象)执行 runBatches那starts execution every trigger interval .
查看代码会发现流式查询的内部执行引擎会对每个触发器进行批处理。
我的理解是,就微批处理而言,并没有真正改变。在 Spark Streaming 中就是这样,在 Structured Streaming 中也有使用。
无耻插件:您可能想更详细地探索这个主题,阅读 my gitbook about Structured Streaming我写这篇文章的目的正是为了理解非常底层的细节。欢迎评论。
关于apache-spark - Structured Streaming 是实时流处理引擎吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44771691/