Spark Release 3.2.2

Spark 3.2.2 は、安定性修正を含むメンテナンスリリースです。このリリースは、Spark の branch-3.2 メンテナンスブランチに基づいています。すべての 3.2 ユーザーに、この安定版リリースへのアップグレードを強く推奨します。

主な変更点

  • [SPARK-37290]: 非決定性関数の場合の指数関数的な計画時間
  • [SPARK-37544]: 月間間隔での日付に対するシーケンスが誤った結果を生成する
  • [SPARK-37643]: charVarcharAsString が true の場合、char データ型パーティションテーブルのクエリが不正確
  • [SPARK-37670]: 重複排除された CTE に対する述語プッシュダウンと列プルーニングのサポート
  • [SPARK-37675]: シャッフルが完了した後、プッシュシャッフルマージ済みファイルを上書きしないようにする
  • [SPARK-37793]: 無効な LocalMergedBlockData がタスクハングを引き起こす
  • [SPARK-37865]: Union の最初のチャイルドに重複する列がある場合、Spark は groupingExpressions を重複排除すべきではない
  • [SPARK-37963]: InMemoryCatalog でテーブル名を変更した後にパーティション URI を更新する必要がある
  • [SPARK-37995]: spark.sql.optimizer.dynamicPartitionPruning.reuseBroadcastOnly が false の場合、TPCDS 1TB q72 が失敗する
  • [SPARK-38018]: CalendarIntervalType を正しく処理するように ColumnVectorUtils.populate を修正
  • [SPARK-38019]: ExecutorMonitor.timedOutExecutors は決定論的であるべき
  • [SPARK-38023]: ExecutorMonitor.onExecutorRemoved は ExecutorDecommission を完了として処理すべき
  • [SPARK-38030]: 非NULL可能列を含むキャストクエリが Spark 3.1.1 の AQE で失敗する
  • [SPARK-38042]: タプルコンポーネントが Array の型エイリアスである場合、Encoder が見つからない
  • [SPARK-38056]: LevelDB を使用している場合、履歴サーバーで構造化ストリーミングが機能しない
  • [SPARK-38073]: 遅延バインディングの問題を回避するために atexit 関数を更新
  • [SPARK-38075]: order by と limit を持つ Hive スクリプト変換が偽の行を返す
  • [SPARK-38120]: パーティション列名が大文字で、パーティション値にドットがある場合、HiveExternalCatalog.listPartitions が失敗する
  • [SPARK-38178]: RocksDB のメモリ使用量を測定するためのロジックを修正
  • [SPARK-38180]: 相関等価述語における安全なアップキャスト式を許可する
  • [SPARK-38185]: 集計関数が空の場合にデータが不正確になるのを修正
  • [SPARK-38204]: すべての状態演算子は、状態パーティショニングと演算子パーティショニングの間で一貫性が損なわれるリスクがある
  • [SPARK-38221]: 複雑な式のストリームでのグループ化が失敗する
  • [SPARK-38236]: create/alter table で指定された絶対ファイルパスが相対パスとして扱われる
  • [SPARK-38271]: PoissonSampler が MaxRows より多くの行を出力する可能性がある
  • [SPARK-38273]: decodeUnsafeRows のイテレータは、基になる入力ストリームを閉じるべき
  • [SPARK-38285]: ClassCastException: GenericArrayData を InternalRow にキャストできない
  • [SPARK-38286]: Union の maxRows と maxRowsPerPartition がオーバーフローする可能性がある
  • [SPARK-38304]: Elt() は、ANSI モードでインデックスが null の場合に null を返す
  • [SPARK-38309]: SHS は、シャッフル読み取りバイトとシャッフル総ブロックメトリックのパーセンタイルが不正確
  • [SPARK-38320]: (flat)MapGroupsWithState は、同じマイクロバッチで入力を受け取ったばかりのグループをタイムアウトさせる可能性がある
  • [SPARK-38325]: ANSI モード: HashJoin.extractKeyExprAt() でのランタイムエラーを回避
  • [SPARK-38333]: DPP が DataSourceScanExec java.lang.NullPointerException を引き起こす
  • [SPARK-38347]: transformUpWithNewOutput での NULL 値の伝播
  • [SPARK-38363]: ANSI モードで Dataset.summary() でのランタイムエラーを回避
  • [SPARK-38379]: ストレージクラスを持つ永続ボリュームをマウントする場合の Kubernetes Client モードを修正
  • [SPARK-38407]: ANSI Cast: NULL でない複合型をキャストする際の制限を緩和
  • [SPARK-38411]: doMergeApplicationListingInternal がイベントログを読み取る際に UTF-8 を使用
  • [SPARK-38411]: fromto が StateSchemaCompatibilityChecker で入れ替わっている
  • [SPARK-38446]: Log4j により、ExecutorClassLoader と FileDownloadCallback の間でデッドロックが発生
  • [SPARK-38528]: 集計式のストリームでジェネレーターを選択すると NullPointerException が発生
  • [SPARK-38542]: UnsafeHashedRelation は numKeys をシリアライズして出力すべき
  • [SPARK-38570]: Literal による不正確な DynamicPartitionPruning
  • [SPARK-38579]: RESTful API のリクエストが NullPointerException を引き起こす可能性がある
  • [SPARK-38587]: rename コマンドの新しい場所を検証する際に、フォーマットされた名前を使用すべき
  • [SPARK-38614]: percent_rank を使用するウィンドウを越える limit のプッシュダウンをしない
  • [SPARK-38631]: Utils.unpack() を介した任意のシェルコマンドインジェクション
  • [SPARK-38652]: uploadFileUri はファイルスキームを保持すべき
  • [SPARK-38655]: OffsetWindowFunctionFrameBase は、入力が NULL でないオフセット行を見つけられない
  • [SPARK-38677]: pyspark がローカルモードで RDD map 操作を実行するとハングする
  • [SPARK-38684]: ストリーム-ストリーム外部結合は、外部イテレータの弱い読み込み整合性により、整合性の問題が発生する可能性がある
  • [SPARK-38787]: エッジケースを処理する際のストリーム-ストリーム結合の整合性の問題の可能性
  • [SPARK-38809]: ストリーム-ストリーム結合の対称ハッシュ実装で NULL 値をスキップするオプションを実装
  • [SPARK-38868]: left_outer 結合後に assert_true が無条件に失敗する
  • [SPARK-38916]: killTask() と launchTask() の間の競合状態により、タスクがキルされない
  • [SPARK-38922]: TaskLocation.apply が NullPointerException をスローする
  • [SPARK-38931]: RocksDB File manager は、最初の空のチェックポイントでキーの数が不明な場合に初期 DFS ディレクトリを作成しない
  • [SPARK-38936]: スクリプト変換フィードスレッドに名前が必要
  • [SPARK-38955]: ‘from_csv’ と ‘schema_of_csv’ で lineSep オプションを無効にする
  • [SPARK-38977]: 相関サブクエリでのスキーマプルーニングを修正
  • [SPARK-38990]: date_trunc と trunc は、インラインテーブルの列からのフォーマットで失敗する
  • [SPARK-38992]: ShellBasedGroupsMappingProvider で bash -c の使用を回避
  • [SPARK-39030]: Python の組み込み関数をシェーディングしないように sum をリネーム
  • [SPARK-39061]: 動的に作成された構造体の配列に対して Inline 関数を使用すると、結果が不正確になったり NPE が発生したりする
  • [SPARK-39083]: FsHistoryProvider の更新とアプリデータクリーンアップ間の競合状態を修正
  • [SPARK-39084]: df.rdd.isEmpty() が予期しないエグゼキュータの失敗と JVM クラッシュを引き起こす
  • [SPARK-39104]: unpersist 呼び出しで Null Pointer Exception
  • [SPARK-39107]: regexp_replace の空文字列の処理におけるサイレントな変更
  • [SPARK-39174]: カタログロードが ClassNotFoundException のためのクラス名を見逃す
  • [SPARK-39259]: now() および同等の関数によって返されるタイムスタンプは、サブクエリで一貫性がない
  • [SPARK-39283]: TaskMemoryManager と UnsafeExternalSorter のデッドロックにより、Spark タスクが無限にスタックする
  • [SPARK-39293]: ArrayAggregate のアキュムレータは、文字列、構造体、配列、またはマップの場合は中間結果をコピーすべき
  • [SPARK-39340]: DS v2 agg プッシュダウンは、トップレベル列の名前にドットを許可するべきである
  • [SPARK-39376]: サブクエリエイリアスの NATURAL/USING JOIN のスター展開で重複する列を出力しない
  • [SPARK-39393]: Parquet データソースは、非繰り返しプリミティブ型に対してのみ述語プッシュダウンフィルターをサポートする
  • [SPARK-39419]: ArraySort のコンパレータが null を返す場合、失敗すべき
  • [SPARK-39422]: unsupported serde 設定を持つ Hive テーブルの場合、SHOW CREATE TABLE は 'AS SERDE' を提案すべき
  • [SPARK-39447]: ブロードキャストされないクエリオールステージのみが空の関係を伝播できる
  • [SPARK-39476]: Long から Float/Double へのキャスト、または Integer から Float へのキャストの場合に Unwrap cast 最適化を無効にする
  • [SPARK-39496]: インライン評価パスは NULL 構造体を処理できない
  • [SPARK-39505]: UI でレンダリングされるログコンテンツをエスケープする
  • [SPARK-39543]: DataFrameWriterV2 のオプションは、v1 にフォールバックする場合にストレージプロパティに渡されるべき
  • [SPARK-39548]: ウィンドウ句クエリを持つ CreateView コマンドが、見つからないウィンドウ定義の問題にヒットする
  • [SPARK-39570]: インラインテーブルはエイリアスを持つ式を許可すべき
  • [SPARK-39575]: AvroDeserializer で get の後に ByteBuffer が rewind を忘れる
  • [SPARK-39650]: ストリーミング重複排除は "value" のスキーマをチェックすべきではない
  • [SPARK-39672]: NotExists サブクエリが競合する属性で失敗する
  • [SPARK-39758]: regexp 関数の無効なパターンでの NPE

依存関係の変更

メンテナンスリリースですが、このリリースではいくつかの依存関係をアップグレードしました。それらは次のとおりです。

JIRA で 詳細な変更点 を確認できます。

このリリースにパッチを提供してくださったすべてのコミュニティメンバーに感謝いたします。


Spark ニュースアーカイブ