异步跟踪进展是什么?

预览

这个特性是在公共预览

异步进展跟踪允许结构化流管道并行检查点进程异步和实际数据处理在micro-batch,减少延迟与维护offsetLogcommitLog

异步跟踪进展

请注意

异步进展跟踪不工作Trigger.onceTrigger.availableNow触发器。试图启用这个特性与这些触发结果查询失败。

异步跟踪工作进展如何减少延迟?

结构化流依赖持久化和管理补偿作为查询处理进度指标。抵消管理操作直接影响处理延迟,因为没有数据处理可能发生,直到完成这些操作。异步跟踪进展使得结构化流管道检查点过程不受这些的影响抵消管理操作。

当你应该配置检查点频率?

用户可以配置进程检查点的频率。的默认设置检查点频率为大多数查询提供良好的吞吐量。配置频率有助于场景抵消管理操作发生在更高的速度比他们可以处理,这创造了一个不断增加的抵消管理操作。阻止这一日益严重的积压,数据处理是阻止或减缓,基本上恢复处理行为消除异步跟踪进展所带来的好处。

请注意

故障恢复时间检查点间隔时间增加而增加。在失败的情况下,管道必须再加工前成功的检查点之前的所有数据。用户可以认为这之间的权衡更低的延迟在正常处理和恢复时间的失败。

与异步相关进展跟踪是什么配置的?

选项

价值

默认的

描述

asyncProgressTrackingEnabled

真/假

启用或禁用异步跟踪进展

asyncProgressTrackingCheckpointIntervalMs

毫秒

1000年

我们承诺的时间间隔偏移和完成提交

用户可以启用异步跟踪进展如何?

用户可以使用代码启用该特性类似于下面的代码:

瓦尔=火花readStream格式(“卡夫卡”)选项(“kafka.bootstrap.servers”,“host1:端口1,host2:端口2”)选项(“订阅”,“在”)负载()瓦尔查询=writeStream格式(“卡夫卡”)选项(“主题”,“出去”)选项(“checkpointLocation”,“/ tmp /检查站”)选项(“asyncProgressTrackingEnabled”,“真正的”)开始()

关掉异步跟踪进展

启用异步跟踪进展时,框架不每批检查点进程。为了解决这个问题,在你禁用异步进展跟踪、过程至少两个micro-batches使用以下设置:

  • .option (“asyncProgressTrackingEnabled”,“真正的”)

  • .option (“asyncProgressTrackingCheckpointIntervalMs”,0)

停止查询后至少两个micro-batches完成处理。现在您可以安全地禁用异步查询进度跟踪和重新启动。

如果你有禁用异步跟踪进展没有完成这一步,您可能会遇到以下错误:

javaIllegalStateException:批处理x不存在

在司机日志,您可能会看到下面的错误:

抵消日志批处理x不存在,需要重新启动查询从最新一批x抵消日志。请确保有两个后续抵消日志可用的最新一批通过手动删除抵消文件(s)。也请确保提交日志的最新一批等于或比最新一批一批的抵消日志。

指令后,在本节中禁用异步进展跟踪允许您处理这些错误和修复您的流媒体工作负载。

限制与异步跟踪进展

这个特性有以下限制:

  • 异步进展跟踪仅支持在无状态的管道在使用卡夫卡下沉。

  • 完全一旦不能保证端到端的处理异步跟踪进展因为偏移量范围为批处理可以改变的失败。有些下沉,如卡夫卡,从不提供只有一次担保。