Spark リリース 3.5.1

Spark 3.5.1 は、セキュリティおよび正確性修正を含む最初のメンテナンスリリースです。このリリースは Spark の branch-3.5 maintenance branch に基づいています。3.5 ユーザーの皆様には、この安定版リリースへのアップグレードを強くお勧めします。

主な変更点

  • [SPARK-45187]: WorkerPage で logPage URL に同じパターンを使用するように修正
  • [SPARK-45553]: assertPandasOnSparkEqual を非推奨にする
  • [SPARK-45652]: SPJ: 動的フィルタリング後の空の入力パーティションを処理する
  • [SPARK-46012]: EventLogFileReader は、appStatus が欠落している場合にローリングログを読み取るべきではない
  • [SPARK-46029]: DS V2 プッシュダウンのためにシングルクォート、_、% をエスケープする
  • [SPARK-46369]: MasterPage の RELAUNCHING ドライバーから kill リンクを削除する
  • [SPARK-46704]: MasterPage で Running Drivers テーブルを Duration 列で正しくソートするように修正
  • [SPARK-46817]: spark-daemon.sh の使用法を、decommission コマンドを追加して修正
  • [SPARK-46888]: Master が、decommission が無効な場合に worker kill リクエストを拒否するように修正
  • [SPARK-39910]: DataFrameReader API は Hadoop アーカイブ (.har) からファイルを読み取れない
  • [SPARK-40154]: PySpark: DataFrame.cache の docstring が間違ったストレージレベルを示している
  • [SPARK-43393]: Sequence expression がオーバーフローする可能性がある
  • [SPARK-44683]: RocksDB ステートストアプロバイダーにロギングレベルが正しく渡されていない
  • [SPARK-44805]: spark.sql.parquet.enableNestedColumnVectorizedReader=true を使用した union 後にデータが失われる
  • [SPARK-44840]: array_insert() が負のインデックスに対して間違った結果を返す
  • [SPARK-44910]: Encoders.bean は、ジェネリック型引数を持つスーパークラスをサポートしない
  • [SPARK-44973]: conv() での ArrayIndexOutOfBoundsException を修正
  • [SPARK-45014]: SparkContext でファイル、jar、アーカイブをクリーンアップする際に fileserver をクリーンアップする
  • [SPARK-45057]: RDD レプリケーションレベルが 2 であるためにデッドロックが発生する
  • [SPARK-45072]: 同じセル評価の Outerscopes を修正
  • [SPARK-45075]: 無効なデフォルト値で ALTER TABLE してもエラーが報告されない
  • [SPARK-45078]: ArrayInsert 関数は、要素の型が派生コンポーネントの型と一致しない場合に明示的なキャストを行うべきである
  • [SPARK-45081]: Encoders.bean は読み取り専用プロパティで動作しなくなった
  • [SPARK-45106]: percentile_cont は、ユーザー入力がランタイム置換の入力型チェックに失敗した場合に内部エラーを発生させる
  • [SPARK-45117]: MultiCommutativeOp 式の欠落している otherCopyArgs を実装する
  • [SPARK-45124]: Local Relations のローカルユーザー ID を使用しない
  • [SPARK-45132]: 関数の IDENTIFIER 句を修正
  • [SPARK-45171]: GenerateExec が、使用前に非決定性式を初期化できない
  • [SPARK-45182]: 不確定ステージを再試行した後、古いステージからのタスク完了を無視する
  • [SPARK-45205]: バージョン 3.2.0 以降、Spark SQL で "show partitions" の実行に時間がかかるようになった。これは SPARK-35278 によって導入された変更による可能性が高い
  • [SPARK-45227]: CoarseGrainedExecutorBackend で、executors がランダムにハングする微妙なスレッドセーフティ問題を修正
  • [SPARK-45291]: ID が無効な場合に、"no such app" の代わりに unknown query execution id を使用する
  • [SPARK-45311]: 3.4.x 以降、Encoder が "NoSuchElementException: None.get" を多数発生させる。ジェネリック型に対するエンコーダーを検索しており、3.5.x では "an expression encoder" ではない
  • [SPARK-45346]: Parquet スキーマ推論は、スキーマのマージ時に大文字小文字を区別するフラグを尊重すべきである
  • [SPARK-45371]: Spark Connect でのシェーディング問題を修正
  • [SPARK-45383]: CheckAnalysis で RelationTimeTravel のケースを欠落
  • [SPARK-45389]: パーティションメタデータの取得における MetaException マッチングルールを修正
  • [SPARK-45424]: CSV スキーマ推論で、タイムスタンプが指定された timestampFormat と一致しない場合の回帰
  • [SPARK-45430]: ignore nulls で offset が行数より大きい場合、FramelessOffsetWindowFunctionFrame が失敗する
  • [SPARK-45433]: CSV/JSON スキーマ推論で、タイムスタンプが指定された timestampFormat と一致せず、各パーティションに 1 行しかない場合にエラーを報告する
  • [SPARK-45449]: JDBC テーブルでのキャッシュ無効化の問題
  • [SPARK-45484]: 不正な parquet 圧縮コーデック lz4raw を使用するバグを修正
  • [SPARK-45498]: フォローアップ: 不確定ステージを再試行した後、古いステージからのタスク完了を無視する
  • [SPARK-45508]: Platform が Java 9+ で cleaner にアクセスできるように、"–add-opens=java.base/jdk.internal.ref=ALL-UNNAMED" を追加
  • [SPARK-45543]: InferWindowGroupLimit は、他のウィンドウ関数が rank ライクな関数と同じウィンドウフレームを持っていない場合にバグを引き起こす
  • [SPARK-45561]: MySQL Dialect で TINYINT catalyst を適切に変換する
  • [SPARK-45580]: サブクエリが外部クエリの出力スキーマを変更する
  • [SPARK-45584]: TakeOrderedAndProjectExec にサブクエリがある場合に実行が失敗する
  • [SPARK-45592]: AQE と InMemoryTableScanExec の正確性バグ
  • [SPARK-45604]: timestamp_ntz を配列に変換するparquet vectorized reader で NPE または SEGFAULT を引き起こす可能性がある
  • [SPARK-45616]: ParVector の使用は、ThreadLocals または SparkSession を伝播しないため安全ではない
  • [SPARK-45631]: PySpark での後方互換性の破損: onQueryIdle の追加による StreamingQueryListener
  • [SPARK-45670]: SparkSubmit は K8s にデプロイする際に –total-executor-cores をサポートしない
  • [SPARK-45678]: tryOrFetchFailedException で BufferReleasingInputStream.available をカバーする
  • [SPARK-45786]: 不正確な Decimal の乗算および除算結果
  • [SPARK-45814]: ArrowConverters.createEmptyArrowBatch がメモリリークを引き起こす可能性がある
  • [SPARK-45896]: Option[Seq/Date/Timestamp/BigDecimal] の Seq/Map の式エンコーディングが失敗する
  • [SPARK-45920]: ordinal による group by は冪等であるべきである
  • [SPARK-46006]: YarnAllocator は、YarnSchedulerBackend が stop を呼び出した後に targetNumExecutorsPerResourceProfileId をクリーンアップし忘れる
  • [SPARK-46016]: pandas API サポートリストを正しく修正
  • [SPARK-46062]: CTE 参照ノードは、CTE 定義ノードから isStreaming フラグを継承しない
  • [SPARK-46064]: EliminateEventTimeWatermark は、isStreaming フラグが現在の子に対して解決中に変更される可能性があることを考慮しない
  • [SPARK-46092]: Parquet 行グループフィルタ作成時のオーバーフローにより、結果が不正確になる
  • [SPARK-46189]: 様々な Pandas 関数が解釈モードで失敗する
  • [SPARK-46239]: Jetty 情報を非表示にする
  • [SPARK-46274]: Range 演算子の computeStats() の適切な long 変換
  • [SPARK-46275]: Protobuf: Permissive モードでは null フィールドを持つ struct ではなく null を返すはずである
  • [SPARK-46330]: HybridStore が有効な場合、Spark UI のロードに時間がかかる
  • [SPARK-46339]: 数値名のディレクトリはメタデータログとして扱われるべきではない
  • [SPARK-46388]: HiveAnalysis は、pattern guard query.resolved を見落としている
  • [SPARK-46396]: LegacyFastTimestampFormatter.parseOptional は例外をスローすべきではない
  • [SPARK-46443]: Decimal の精度とスケールは JDBC dialect によって決定されるべきである
  • [SPARK-46453]: SessionHolder は internalError() から例外をスローしない
  • [SPARK-46466]: vectorized parquet reader は timestamp ntz のリベースを絶対に行うべきではない
  • [SPARK-46480]: テーブルキャッシュタスク試行時の NPE を修正
  • [SPARK-46535]: col stats なしの列を describe extended する際に NPE が発生する
  • [SPARK-46562]: HiveAuthFactory の UserGroupInformation から keytabFile の取得を削除する
  • [SPARK-46590]: スキュー結合最適化後の Coalesce partition のアサートエラー
  • [SPARK-46598]: OrcColumnarBatchReader は、欠落している列の列ベクトルを作成する際にメモリモードを尊重すべきである
  • [SPARK-46602]: CREATE VIEW IF NOT EXISTS は TABLE_OR_VIEW_ALREADY_EXISTS 例外をスローすべきではない
  • [SPARK-46609]: PartitioningPreservingUnaryExecNode での指数関数的爆発を回避する
  • [SPARK-46640]: RemoveRedundantAliases は、エイリアスを削除する際に SubqueryExpression を考慮しない
  • [SPARK-46663]: イテレータを持つ pandas UDF のメモリプロファイラを無効にする
  • [SPARK-46676]: dropDuplicatesWithinWatermark がプランの正規化時にエラーをスローする
  • [SPARK-46684]: CoGroup.applyInPandas/Arrow は引数を正しく渡すべきである
  • [SPARK-46700]: シャッフルディスクスピリングバイトメトリックの最後のスピリングをカウントする
  • [SPARK-46747]: PostgresDialect.getTableExistsQuery - LIMIT 1 による過剰な共有ロック
  • [SPARK-46763]: 非グループ化キーが重複属性を持つ場合に ReplaceDeduplicateWithAggregate が失敗する
  • [SPARK-46769]: タイムスタンプ関連のスキーマ推論を改善する
  • [SPARK-46779]: キャッシュされたリレーションを持つサブクエリによるグルーピングが失敗する可能性がある
  • [SPARK-46786]: MountVolumesFeatureStep で ReadWriteOnce ではなく ReadWriteOncePod を使用するように修正
  • [SPARK-46794]: サブクエリを含むチェックポイントからの推論された述語による不正確な結果
  • [SPARK-46796]: SST ファイルでの RocksDB versionID mismatch
  • [SPARK-46855]: module.pycatalyst モジュールの依存関係に sketch を追加する
  • [SPARK-46861]: DAGScheduler のデッドロックを回避する
  • [SPARK-46862]: CSV データソースからロードされたデータフレームの count() が不正確
  • [SPARK-46945]: 古い K8s クラスター用に spark.kubernetes.legacy.useReadWriteOnceAccessMode を追加
  • [SPARK-47019]: AQE 動的キャッシュパーティショニングにより SortMergeJoin でデータ損失が発生する
  • [SPARK-45360]: SPARK_REMOTE から Spark セッションビルダーの設定を初期化する
  • [SPARK-45706]: Binder のセットアップ中のビルドをすべて高速に失敗させる
  • [SPARK-46732]: JobArtifactSet をブロードキャスト実行スレッドに伝播する
  • [SPARK-44833]: Spark Connect は、初期 ExecutePlan がサーバーに到達しなかった場合に、早期に Reattach して再接続する
  • [SPARK-44835]: SparkConnect ReattachExecute は、ExecutePlan がアタッチする前に例外を発生させる可能性がある
  • [SPARK-45050]: UNKNOWN io.grpc.StatusRuntimeException のエラーメッセージを改善する
  • [SPARK-45071]: マルチカラムデータを処理する際の BinaryArithmetic#dataType の処理速度を最適化する
  • [SPARK-45250]: 動的割り当てが無効な場合、Yarn クラスターのステージレベルタスクリソースプロファイルをサポートする
  • [SPARK-45386]: StorageLevel.NONE を使用した永続化時の正確性問題
  • [SPARK-45419]: より大きなバージョンのファイルバージョンマップエントリを削除することにより、異なる RocksDB インスタンスでの RocksDB SST ファイルの再利用を回避する
  • [SPARK-45495]: 動的割り当てが無効な場合、K8s クラスターのステージレベルタスクリソースプロファイルをサポートする
  • [SPARK-45538]: pyspark connect overwrite_partitions バグ
  • [SPARK-45770]: DataFrame.drop での列解決を修正
  • [SPARK-45882]: BroadcastHashJoinExec のパーティショニング伝播は CoalescedHashPartitioning を尊重すべきである
  • [SPARK-45974]: RowLevelOperationRuntimeGroupFiltering のために scan.filterAttributes の非空判断を追加する
  • [SPARK-46170]: SparkSessionExtensions でアダプティブクエリ後プランナールールをインジェクトするサポート
  • [SPARK-46380]: インラインテーブル評価の前に現在時刻を置換する
  • [SPARK-46600]: SqlConf と SqlApiConf 間の共通コードを別のオブジェクトに移動する
  • [SPARK-46610]: CREATE TABLE は、オプションでキーの値がない場合に例外をスローすべきである
  • [SPARK-45189]: TableIdentifier から UnresolvedRelation を作成する際に、catalog フィールドを含めるべきである
  • [SPARK-46182]: lastTaskRunningTime と lastShuffleMigrationTime の間の競合状態により、decommission された executor でシャッフルデータが失われる
  • [SPARK-46547]: メンテナンススレッドとストリーミング集計物理演算子の間のデッドロック問題を修正
  • [SPARK-46628]: licenses 名で SPDX 短縮識別子を使用する

依存関係の変更

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

  • [SPARK-47023]: aircompressor を 0.26 にアップグレードする
  • [SPARK-45883]: ORC を 1.9.2 にアップグレードする

詳細な変更については、JIRA を参照してください: 詳細な変更

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


Spark ニュースアーカイブ