次の方法で共有


リアルタイム モードの制限事項

このページでは、構造化ストリーミングでのリアルタイム モードに関する既知の制限事項について説明します。

ソースの制限事項

Kinesis の場合、リアルタイム モードではポーリング モードはサポートされません。 また、再パーティション分割が頻繁に行われると、待機時間に悪影響が及ぶことがあります。

共用体の制限事項

Union 演算子には、いくつかの制限があります。

  • 自己結合はサポートされていません。
    • Kafka の場合、同じソース データ フレーム オブジェクトと、そこから派生したデータ フレームを共用体で使用することはできません。 回避策として、同じソースから読み取るさまざまな DataFrame を使用します。
    • Kinesis の場合、同じ構成の同じ Kinesis ソースから派生したデータ フレームを結合することはできません。 回避策として、異なる DataFrame を使用する代わりに、各 DataFrame に異なる consumerName オプションを割り当てることができます。
  • ステートフル演算子 ( aggregatededuplicatetransformWithStateなど) は、共用体の前に定義できません。
  • バッチ データ ソースとの結合はサポートされていません。

mapPartitions 制限

Scala と同様のPython API (mapInPandasmapInArrow) のmapPartitionsは、入力パーティション全体の反復子を受け取り、入力と出力の間に任意のマッピングを持つ出力全体の反復子を生成します。 これらの API は、出力全体をブロックすることでリアルタイム モードでパフォーマンスの問題を引き起こす可能性があり、待機時間が長くなります。 これらの API のセマンティクスは、ウォーターマークの伝達を適切にサポートしていません。

同様の機能を実現するには、スカラー UDF と 複雑なデータ型の変換 または filter を組み合わせて使用します。

transformWithStateInPandas サポートされていません

transformWithStateInPandas演算子は、リアルタイム モードではサポートされていません。 リアルタイム モードのPythonでカスタムステートフル処理が必要な場合は、代わりに行ベースの transformWithState API を使用します。 行ベースの API は、pandas DataFrames ではなく、 Row オブジェクトを使用して同じステートフルな処理機能を提供します。

リアルタイム モードでの transformWithStatetransformWithState 動作の詳細については>、行ベースの API を使用した作業Pythonの例については、Real-time モードの例を参照してください。