流式处理实时模式具有以下限制:
任意状态操作不支持 (ARBITRARY_STATEFUL_OPERATIONS_NOT_SUPPORTED)
目前不支持任意有状态流式处理运算符 <op>
。 有关受支持运算符的列表,请参阅实时模式用户指南。
不支持异步进度跟踪
实时模式下不支持异步进度跟踪。 将选项 asyncProgressTrackingEnabled 设置为 false,然后重试查询。
不支持异步状态检查点
实时模式下不支持异步状态检查点。 将 spark.databricks.streaming.statefulOperator.asyncCheckpoint.enabled 设置为 false,然后重试查询。
批处理联合不支持
实时模式不支持与批处理数据源联合。 确保联合流式处理查询仅包含流式处理数据源。
群集配置不受支持
不支持以下配置:
<invalidReasons>
。 在群集配置中将 spark.databricks.streaming.realTimeMode.enabled 设置为 true,如果存在,请从群集配置中删除 <confNames>
,然后重启 Spark 群集。
不支持在水印内删除重复项
不支持 dropDuplicatesWithinWatermark。 要解决此限制,可以改用 dropDuplicates。 请记得将事件时间列传递至 dropDuplicates,以便状态可被逐出。
不支持在带状态的转换中使用事件时间定时器
目前尚不支持 transformWithState 运算符中基于事件的计时器。 如果要使用 transformWithState 运算符,请在 transformWithState 运算符中指定处理时间,然后重试查询。
在联合操作中不支持相同来源
实时模式不支持在单个查询中对两个或多个相同的流式处理数据源进行联合。 这包括例如多次引用同一源数据帧,或者对某些源使用相同配置的两个数据源的情况。 对于 Kafka,请避免重用相同的数据帧并创建不同的数据帧。 对于 Kinesis,除了复制数据帧外,请确保每个 DataFrame 为“consumerName”选项设置唯一值。 查询中提供的源: <sources>
输入流不受支持
不支持输入流 <className>
。 有关支持的输入流列表,请参阅 Real-Time 模式用户指南。
操作符或接收器未在允许列表中
<errorType>
:<message>
不在实时模式的 <errorType>
允许列表中。 若要绕过此检查,请将 spark.databricks.streaming.realTimeMode.allowlistCheck 设置为 false。 通过更改此项,你同意以自己的风险运行查询。
输出模式不支持
不支持输出模式 <outputMode>
。 要解决此限制,请将输出模式设置为“更新”。 将来可能会支持 <outputMode>
。
会话窗口不支持
尚不支持会话窗口。 唯一允许的窗口聚合是使用翻转和滑动窗口。
洗牌超过一次
物理计划中存在 <shuffleCount>
org.apache.spark.sql.execution.exchange.ShuffleExchangeExec 运算符。 可能,你正在调用需要多次随机排列的操作,而 RTM 不支持这种操作。 若要运行查询,请将 spark.databricks.streaming.realTimeMode.allowlistCheck 设置为 false。 通过更改此项,你同意以自己的风险运行查询。
不支持的接收器
<className>
当前不支持数据接收端。 有关支持的接收器列表,请参阅 Real-Time 模式用户指南。
SQL_CONFIGURATION_NOT_SUPPORTED
不支持以下配置:
<invalidReasons>
。 在群集配置中将 spark.databricks.streaming.realTimeMode.enabled 设置为 true,并在存在时从 SparkSession 配置中删除 <confNames>
,然后重启 Spark 群集。
在 UNION 之前不支持有状态运算符
实时模式下的流式处理查询不能在进行联合之前包含监控状态的运算符(例如 aggregate、deduplicate、transformWithState)。 请重构查询,以在进行任何监控状态的操作之前应用联合。
流及流连接不支持
尚不支持任何类型的流式处理联接。