关于spark structed stream 流中的触发trigger间隔的理解

这里的讨论先把continue stream这种场景排除掉,只讨论常规的spark的微批量场景,

  1. 如果不执行trigger触发器的时候,spark是尽可能快的分批处理数据,但是多快说不好,
    一般是100ms以上,所以这里几乎可以理解成差不多100ms一个微批
  2. 显式的指定触发间隔,Trigger.ProcessingTime(“2 seconds”),这里每个批次就是2s一批数据

关于kafka或者file作为输入源时的maxOffsetPerTrigger和maxFilePerTrigger参数的理解:
相当于每次触发一个微批的数据里面最多包含maxOffset或者N个文件里面的数据量,这个和trigger的触发间隔没有任何关系

关于output model输出模式的理解:输出模式会反过来影响数据输出的方式(拿带窗口时间的聚合作为例子),比如:如果是Append输出模式的话,
数据会一直等到wartermark时间时候才输出数据,这样数据就固定了,超过wartermark的时间来的数据就直接丢弃了。
但是如果是update输出模式的话,每次触发时间同一个key会变,不会一直等到wartermark之后
才输出一次结果,而是从出现到wartermark期间,每次触发都更新对应key的value并输出

你可能感兴趣的:(大数据,java,开发语言,后端)