即時模式限制

本頁說明了結構化串流中即時模式的已知限制。

來源限制

對於 Kinesis,Databricks 建議使用增強型 Fan-Out(EFO)模式以獲得最低延遲。 此外,頻繁的重新分割可能會對延遲產生負面影響。

工會限制

聯合運算子有一些限制:

  • 不支援自我聯集:
    • 對 Kafka 來說,你不能使用同一個來源資料框架物件並從它衍生出聯合資料框架。 作為變通方法,使用來自同一來源的不同資料幀。
    • 對於 Kinesis,你無法將來自相同 Kinesis 來源、相同配置的資料幀合併。 作為一個變通方法,你可以為每個資料框架指派不同的 consumerName 選項,而不是使用不同的資料框架。
  • 有狀態運算子(例如, aggregate, deduplicate, transformWithState)不能在 Union 之前定義。
  • 不支援與批次來源的聯合。

mapPartitions 限制

Scala 及類似 Python API(mapPartitions、mapInPandas)中的 mapInArrow 會對整個輸入分割區產生迭代器,並產生輸入與輸出間任意映射的整個輸出迭代器。 這些 API 在即時模式下會阻擋整個輸出,導致效能問題,增加延遲。 這些 API 的語意無法充分支援浮水印傳播。

可用純量 UDF 搭配 複雜資料型態轉換 或 filter,以達成類似功能。

transformWithStateInPandas 不支援

transformWithStateInPandas該運算元不支援即時模式。 如果你需要在Python即時模式下自訂有狀態處理,建議改用列式 transformWithState API。 基於資料列的 API 提供相同的有狀態處理能力,使用 Row 物件而非 pandas DataFrame。

有關 transformWithState 在即時模式下的行為,請參見 ,以及使用 row-based API 的 PythontransformWithState。