移行ガイド: ストラクチャードストリーミング
- ストラクチャードストリーミング 3.3 から 3.4 へのアップグレード
- ストラクチャードストリーミング 3.2 から 3.3 へのアップグレード
- ストラクチャードストリーミング 3.0 から 3.1 へのアップグレード
- ストラクチャードストリーミング 2.4 から 3.0 へのアップグレード
この移行ガイドでは、ストラクチャードストリーミングに固有の項目について説明しています。ストラクチャードストリーミングを上位バージョンに移行する際には、SQL の移行に関する多くの項目を適用できます。 移行ガイド: SQL、データセット、データフレーム を参照してください。
ストラクチャードストリーミング 3.3 から 3.4 へのアップグレード
-
Spark 3.4 以降、`Trigger.Once` は非推奨となり、ユーザーは `Trigger.Once` から `Trigger.AvailableNow` に移行することを推奨します。詳細は SPARK-39805 を参照してください。
-
Spark 3.4 以降、Kafka オフセットフェッチの設定 (`spark.sql.streaming.kafka.useDeprecatedOffsetFetching`) のデフォルト値が `true` から `false` に変更されました。デフォルトでは、コンシューマーグループベースのスケジューリングに依存しなくなり、必要な ACL に影響します。詳細については、ストラクチャードストリーミング Kafka 統合 を参照してください。
ストラクチャードストリーミング 3.2 から 3.3 へのアップグレード
- Spark 3.3 以降、すべてのステートフル演算子は、正確なグルーピングキーを持つハッシュパーティションを必要とします。以前のバージョンでは、ストリーム-ストリーム結合を除くすべてのステートフル演算子は、正確性の問題が発生する可能性のある緩やかなパーティション基準を必要としていました。(詳細は SPARK-38204 を参照してください。) 後方互換性を確保するために、古いバージョンから構築されたチェックポイントでは古い動作を保持しています。
ストラクチャードストリーミング 3.0 から 3.1 へのアップグレード
-
Spark 3.0 以前では、現在のウォーターマークと許容される遅延レコード遅延よりも古い行を出力できるステートフル操作を持つクエリ、つまりダウンストリームのステートフル操作における「遅延行」は破棄される可能性があり、Spark は警告メッセージのみを出力していました。Spark 3.1 以降、Spark は正確性の問題が発生する可能性のあるそのようなクエリをチェックし、デフォルトで AnalysisException をスローします。正確性の問題のリスクを理解し、それでもクエリを実行することを決定したユーザーは、設定 `spark.sql.streaming.statefulOperator.checkCorrectness.enabled` を false に設定することで、このチェックを無効にしてください。
-
Spark 3.0 以前では、Spark はオフセットフェッチに `KafkaConsumer` を使用しており、ドライバーで無限に待機する可能性がありました。Spark 3.1 では、新しい設定オプション `spark.sql.streaming.kafka.useDeprecatedOffsetFetching` (デフォルト: `true`) が追加され、これを `false` に設定することで、Spark は `AdminClient` を使用した新しいオフセットフェッチメカニズムを使用できるようになりました。詳細については、ストラクチャードストリーミング Kafka 統合 を参照してください。
ストラクチャードストリーミング 2.4 から 3.0 へのアップグレード
-
Spark 3.0 では、`spark.readStream(...)` を介して text、json、csv、parquet、orc などのファイルベースのデータソースが使用される場合、ストラクチャードストリーミングはソーススキーマを null 許容に強制します。以前は、ソーススキーマの null 許容性を尊重していましたが、デバッグが難しい NPE の問題が発生していました。以前の動作に戻すには、`spark.sql.streaming.fileSource.schema.forceNullable` を `false` に設定します。
-
Spark 3.0 は、ストリーム-ストリーム外部結合における正確性の問題を修正し、状態のスキーマが変更されました。(詳細は SPARK-26154 を参照してください)。ストリーム-ストリーム外部結合を使用する Spark 2.x から構築されたチェックポイントからクエリを開始すると、Spark 3.0 はクエリに失敗します。出力を再計算するには、チェックポイントを破棄し、以前の入力を再生します。
-
Spark 3.0 では、非推奨のクラス `org.apache.spark.sql.streaming.ProcessingTime` が削除されました。代わりに `org.apache.spark.sql.streaming.Trigger.ProcessingTime` を使用してください。同様に、`org.apache.spark.sql.execution.streaming.continuous.ContinuousTrigger` は `Trigger.Continuous` に置き換えられ、`org.apache.spark.sql.execution.streaming.OneTimeTrigger` は `Trigger.Once` に置き換えられて非表示になりました。