本页介绍结构化流式处理中实时模式的已知限制。
源限制
对于 Kinesis,实时模式不支持轮询模式。 此外,频繁的重新分区可能会对延迟造成负面影响。
联合限制
Union 运算符存在一些限制:
- 不支持自联合:
- 对于 Kafka,不能使用同一源数据帧对象和联合派生的数据帧。 解决方法是使用不同的从同一源读取的数据帧。
- 对于 Kinesis,不能将派生自同一 Kinesis 源的数据帧与同一配置联合。 解决方法是,可以为每个数据帧分配不同的
consumerName选项,而不是使用不同的 DataFrame。
- 在 Union 之前,无法定义有状态运算符(例如
aggregate,)deduplicatetransformWithState。 - 不支持与批量源合并。
mapPartitions 限制
scala 中的 mapPartitions 和类似的Python API(mapInPandas,mapInArrow)采用整个输入分区的迭代器,并生成具有输入和输出之间任意映射的整个输出的迭代器。 这些 API 可以通过阻止整个输出(这会增加延迟)来实时模式导致性能问题。 这些 API 的语义功能不支持水印传播。
将标量 UDF 与 转换复杂数据类型 结合使用,或通过 filter 来实现类似的功能。