foreach
和 foreachBatch
都能在向目标数据源写入数据时实现定制化的逻辑,它们之间的差别在于:
-
foreachBatch
多应用于数据分流或双写场景,目标数据源往往是已经有线程的 data writer 了 -
foreach
则要自行实现对目标数据的连接和读写处理 - 两者操纵数据的颗粒度不同,
foreach
对数据的梳理逻辑(process 方法)作用到 DF 中的每一行上,而foreachBatch
则直接操纵的是每一个 micro-batch 对应的 DF。
参考资料
- Spark 关于 foreach 和 foreachBatch 的官方文档
- Introducing Low-latency Continuous Processing Mode in Structured Streaming in Apache Spark 2.3