Introduction

Apache Spark 4.2 は、最新のデータおよび AI スタックの多くをエンジン自体に取り込みます。Spark 4.x を基盤として、このリリースでは統制されたメトリクス、ベクトルおよび top-K プリミティブ、より Arrow ファーストな Python パス、ファーストクラスのチェンジデータキャプチャ、強化されたストリーミングおよび運用基盤を追加します。

これにより、Spark は AI アプリケーションの両側でより有用になります。AI エージェントに提供されるデータの品質と鮮度を向上させ、アプリケーションやエージェントがリモート実行サービスとして Spark を呼び出しやすくします。AI のストーリーは具体的です:信頼できるセマンティクス、ネイティブな検索プリミティブ、最新のチェンジデータ、および Spark 規模の計算へのオープンなインターフェースです。

Spark 4.2 は 4 つの利点で理解できます:

  • 一度真実を定義: Metric views により、統制されたビジネスメトリクスを Spark に配置し、SQL、BI ツール、アプリケーション、AI システムが同じ定義を使用できるようにします。
  • どこからでも Spark にアクセス: Spark Connect、PySpark、Arrow、Python Data Source の改善により、サービスや Python エコシステムから Spark を呼び出しやすくします。
  • AI ネイティブな分析を SQL で実行: ベクトル関数、NEAREST BY、スケッチ、ランキング、地理空間型により、より多くの分析用ビルディングブロックを Spark SQL に直接取り込みます。
  • 変化するデータを安全に移動: Auto CDC、CHANGES サーフェス、Data Source V2、Real-Time Streaming により、継続的に変化するデータを正しく処理しやすくします。

これらの変更により、組織は 1 つのオープンエンジンを使用してデータの準備、ビジネス意味の定義、関連コンテキストの取得、分析および AI アプリケーションの最新化を行うことができます。

Metrics and Semantic Modeling: Define Truth Once

Spark 4.2 では metric views を導入し、Spark SQL にネイティブなセマンティックレイヤーをもたらします。チームはビジネスメトリクスを一度定義し、ダッシュボード、レポート、アプリケーション、AI ツール全体で一貫して使用できます。

これが重要な理由は、多くの重要なメトリクスが安全に加算できないためです。比率、個別カウント、リテンション、および類似の測定値は、すべてのコンシューマーが異なる粒度で数式を書き換えると誤った結果を生む可能性があります。Metric views はディメンションとメジャーを Spark が理解するファーストクラスのオブジェクトにし、エンジンが意図した集計セマンティクスを保持できるようにします。

metric view が一度定義されると、ユーザーは同じ統制された測定値を異なるディメンションでクエリできます:

AI アプリケーションにとって、これは特に重要です。エージェントはダッシュボードと異なる方法で収益を計算したり、ユーザーが要求したグループ化を変更したときに異なる回答を返したりすべきではありません。統制された metric view は SQL、BI、AI に単一の信頼できる情報源を提供し、Spark の分析、カタログ解決、権限が一貫して適用されます。

Spark Connect and PySpark: Reach Spark from Everywhere

Spark as a service API

Spark Connect は gRPC と Arrow に基づくプロトコルを通じてクライアントと Spark サーバーを分離します。クライアントは論理プランを構築し、サーバーはそれを分析・実行し、結果は Arrow バッチとして返されます。クライアントは完全な Spark ランタイムやコロケートされた JVM を必要としません。

これにより、Spark をノートブック、サービス、開発者ツール、AI アプリケーションに埋め込みやすくなります。エージェントやアプリケーションは独自のランタイムから Spark を呼び出すことができ、Spark は分析、最適化、実行、ガバナンスをサーバー上で維持します。

Spark 4.2 は Spark Classic との互換性ギャップを継続的に埋めています。改善点には、RDD API 互換性の向上、spark.read.* および SparkSession.emptyDataFrame への DataFrame 入力、改善されたデバッグ可能性、エラー伝播、ステータス報告、YARN クラスターモードサポートが含まれます。これらの変更により、PySpark と Spark Connect はより高速で互換性が高く、スケールおよびリモートでの運用が容易になります。

A more Arrow-first Python path

Python は、ユーザーが Spark でデータおよび AI ワークロードを構築する主要な方法の 1 つであり続けています。Spark 4.2 では、Arrow 最適化 Python UDF 実行がデフォルトで有効化され、既存の UDF がコードの書き換えなしに高速なカラムナーパスを使用できるようになりました。Pandas 3 サポートにより、Spark とともに Python 環境のアップグレードも容易になります。

より多くの制御が必要なコードの場合、Arrow UDF はデータを PyArrow 配列に保持し、不必要な Pandas 変換を回避します。Spark はまた、Python 実行のプロファイリングとデバッグを拡張し、Python Data Sources の時間およびメモリプロファイリング、改善されたワーカーダイアグノスティクス、データとしてクエリ可能なログを含みます。

Spark 4.2 は、Arrow C Data Interface および PyCapsule プロトコルを通じて相互運用性も改善します。両側がサポートする場合、Spark DataFrames をコピーやシリアライズなしで Polars や DuckDB などの Arrow ネイティブツールに移動できます。これにより、Spark 規模の処理とより広範な Python および AI エコシステム間の接着剤が削減されます。

Python Data Sources は統合の摩擦をさらに低減します。チームは Python でバッチまたはストリーミングリーダーおよびライターを構築し、一度登録し、標準の Spark データソースインターフェースを通じて使用できます。4.2 では、プロファイリングにより、これらのコネクタをブラックボックスとして扱うのではなく、調整および運用しやすくなります。

Spark SQL: AI-Native Analytics in the Engine

Vector scoring and top-K retrieval

Spark 4.2 は、ベクトル類似度検索、ランキング、時系列分析のための新しい SQL プリミティブを追加します。このリリースでは、ベクトル距離および類似度関数、ベクトル正規化、ベクトル集計、および距離ベースのマッチングのための top-K ランキングジョインである NEAREST BY を導入します。これらのプリミティブにより、スケールでの検索、レコメンデーション、エンティティ解決、候補生成が可能になります。

Native geospatial analytics

組み込みの GEOMETRY および GEOGRAPHY 型と ST_* 関数により、外部の空間拡張なしで位置対応分析が可能になります。Spark 4.2 はまた、Parquet、WKT/WKB、SRID 保存、Python 変換サポートも追加します。

Fully qualified built-in functions and temporary views

Spark 4.2 では、SYSTEM.BUILTIN で修飾することで Spark 提供の関数を明確に呼び出すことができます。セッション変数の前例に従い、一時ビューを SYSTEM.SESSION で完全に修飾することもできます。これは、ユーザー定義関数や永続化されたリレーションから曖昧さを解消し、インジェクションを防ぐのに役立ちます。

SQL search path

Spark 4.2 は SET PATH による SQL 検索パスサポートを追加し、名前空間間のテーブル、関数、変数の解決や、パスにスキーマを追加するだけでオブジェクトのライブラリを簡単に解決できるようにします。

Spark はビューおよび SQL 関数に SQL パスを永続化し、予測可能な名前解決を実現します。

Spark 4.2 から SQL スクリプトは DECLARE、OPEN、FETCH、CLOSE カーソルを実行できます。これにより、以前は DataFrames を使用するために SQL の外に出る必要があった結果セットの行ごとの処理をより制御できます。

Spark SQL はまた、Tuple sketches、時系列分析のための time_bucket、ファイル形式間のより広範な TIME 型サポート、ウィンドウ結果をフィルタリングするための QUALIFY、Top-K の max_by および min_by、一般的な集計関数に対する IGNORE NULLS および RESPECT NULLS サポートを追加します。

これらの追加により、Spark SQL は現代の分析アプリケーションに対してより表現豊かになります。

Spark Declarative Pipelines and Auto CDC: Move Changing Data Safely

Spark 4.2 は Spark Declarative Pipelines (SDP) に Auto CDC サポートを導入し、ファーストクラスの SCD (Slow Changing Dimensions) Type 1 処理を Spark に取り込みます。Auto CDC 以前は、チェンジフィードを消費してターゲットテーブルに適用するには、削除や順序外のチェンジイベントの処理により複雑でエラーが発生しやすい手書きのマージロジックが必要でした。Auto CDC では、ユーザーは CDC イベントがターゲットテーブルをどのように更新するかを単に設定し、複雑な処理を Spark に任せることができます。

Auto CDC は、SCD Type 1 ターゲットテーブルに CDC 変更を適用するための Python API を提供します。これは、顧客プロファイル、製品カタログ、アカウントレコード、運用参照データなど、各レコードの最新バージョンを確実に維持する必要がある一般的なインジェストおよびレプリケーションのワークロード向けに設計されています。

たとえば、Auto CDC フローは宣言的に表現できるようになりました:

Auto CDC に加えて、Spark Declarative Pipelines は、eager analysis のためのより安全なサーバーサイド処理やフロー用の構造化識別子など、重要なプラットフォーム強化も受けています。これらの変更により、宣言型パイプライン開発がより信頼性が高くなり、Spark に高レベルなデータエンジニアリングパターンの基盤を提供します。

Real-Time Mode in Structured Streaming: Fresher Operational Data

Structured Streaming の Real-Time Mode (RTM) は、ストリーミングクエリがミリ秒単位のエンドツーエンドレイテンシでデータを処理できるようにします。これにより、Spark は新しいクラスのユースケースを開拓し、不正検知、パーソナライゼーション、観測可能性、リアルタイム特徴量エンジニアリングなどの運用データアプリケーションの基盤となっています。

Spark 4.2 では、RTM を PySpark に拡張しました。Python UDF なしのステートレスストリーミングクエリを Real-Time Mode で実行できるようになりました。Python は使いやすさからデータサイエンティストやエンジニアの間で人気があり、これにより RTM の低レイテンシ処理をより幅広いユーザーにもたらします。

今後の Spark 4.x リリースに向けて、RTM に ステートフル サポートを追加する作業もすでに進行中です。この取り組みは SPARK-54699 で追跡されており、3 つの主要コンポーネントがあります:

  • 新しいストリーミングシャッフル (SPARK-56664) により、データが準備でき次第上流ステージから下流ステージに転送され、ステージの完了を待つ必要がなくなります
  • 同時ステージスケジューリング (SPARK-57000) により、複数のステージを同時に実行できます
  • ステートフルオペレーターサポート (SPARK-57228) で、transformWithState から開始

ステートフルサポート以外にも、RTM で Python UDF を有効化する (SPARK-57237) 作業も進めています。

ご期待ください — フィードバックやコントリビューションをお待ちしています!

Data Source V2: One Surface for Evolving Data Sources

Spark 4.2 は Data Source V2 のもう 1 つの大きな前進を示します。DSv2 は、読み取り、書き込み、行レベル操作、スキーマ進化、チェンジデータ、運用メトリクス、トランザクションを Spark を通じて公開するコネクタの標準基盤になりつつあります。

CDC in DSv2

Spark 4.2 は DSv2 にファーストクラスのチェンジデータキャプチャサポートを追加します。コネクタは標準 API を通じてチェンジストリームを公開でき、ユーザーは新しい CHANGES SQL 句、DataFrame API、PySpark バインディングでクエリできます。Spark はまた、エンジン内で一般的な後処理 — コピーオンライトのキャリーオーバーの削除、更新の検出、行ごとのネットチェンジの計算 — も処理します。同じクエリが CDC をサポートする任意の DSv2 コネクタ間で一貫して動作します。

Row-Level Operations, Schema Evolution, and Transactions

Spark 4.2 は Data Source V2 (DSv2) コネクタでの行レベル DML 操作のサポートをさらに強化します。MERGE INTO は全ステージコード生成を含むパフォーマンス改善を受け、Spark 4.1 で導入されたスキーマ進化機能のさらなる強化も行われます。

スキーマ進化は INSERT INTO 操作にもサポートされ、名前ベースおよび位置ベースのカラム解決の両方に対応するため、進化するテーブルへの書き込み時の摩擦を低減します。また、UPDATE および DELETE 用の操作サマリーが追加され、Spark 4.1 で追加された MERGE INTO サマリーを補完します。MERGE INTO メトリクスも拡張・洗練されました。

Spark 4.2 は、本番グレードの DSv2 コネクタおよびレイクハウステーブル形式のための追加のビルディングブロックを導入します。主要な追加には、トランザクション API の基盤、強化されたパーティション統計フィルタリング、ストレージパーティションジョインの改善、DSv1 と DSv2 のコマンドおよび動作のより緊密な整合が含まれます。これらの強化により、DSv2 はレイクハウスコネクタ、トランザクションテーブル形式、その他の大規模データシステムの実装のためのより完全なプラットフォームになります。

Notable Improvements and Acknowledgements

Spark 4.2 には、Spark の運用、デバッグ、セキュリティ、スケーリングを容易にするいくつかのプラットフォーム改善が含まれています。Spark Web UI は Bootstrap 5、ダークモード、改善された SQL プラン可視化、クエリタイムライン改善、サーバーサイドページネーションにより大幅にモダナイズされました。Kubernetes サポートは、異種エグゼキューター管理、安定したリソースマネージャー API、制御プレーンオーバーヘッドの削減により改善されました。Spark 4.2 はまた、JDK 25 サポート、Web セキュリティの改善、Spark History Server のスケーリング、Scala、Parquet、ORC、Arrow、Netty、Hadoop を含む主要依存関係のアップグレードを追加します。

Spark 4.2 は Apache Spark コミュニティの強さを反映しており、260 人以上のコントリビュータによる 1,900 件を超えるコミットがあります。このリリースを実現するためにコード、レビュー、テスト、ドキュメント、フィードバックを提供してくれたすべての人に感謝します。

image2.png

Get Started with Spark 4.2

spark.apache.org/downloads から Apache Spark 4.2 をダウンロードし、完全な変更リストについては Apache Spark 4.2 リリースノートをご覧ください。Apache Spark 4.2 は Databricks Runtime 19 Beta でも利用可能になります。

image1.png