Caution
Microsoft Fabric Runtime 1.2は2026年3月31日にサポート終了しました。 その日以降も一定期間は動作を続けるかもしれませんが、もはやサポートされたランタイムではなく、バグ修正やセキュリティアップデート、脆弱性修正は受けられません。 その結果、Runtime 1.2上で動作するワークロードは時間とともに運用上およびセキュリティ上のリスクが増加します。
さらに、Runtime 1.2ジョブの段階的無効化が間もなく始まり、今後もRuntime 1.2ジョブが実行し続ける保証はありません。 継続的なサポート、セキュリティコンプライアンス、プラットフォームの信頼性を確保するために、ビジネスへの混乱を避けるために、Fabricのワークスペースと環境をできるだけ早くRuntime 1.3(Apache Spark 3.5およびDelta Lake 3.2)にアップグレードしてください。
注: Starter Poolはサポートされていませんし、非推奨のランタイムでは利用できません。 Runtime 1.2を使うとオンデマンドプールが使われ、セッションの立ち上げに数分かかることがあります。
Fabric RuntimeはApache Sparkを基盤としたAzure統合プラットフォームで、データエンジニアリングおよびデータサイエンスの体験の実行と管理を可能にします。 このドキュメントでは、Runtime 1.2 のコンポーネントとバージョンについて説明します。
Runtime 1.2 の主なコンポーネントは次のとおりです。
- Apache Spark 3.4.1
- オペレーティング システム: Mariner 2.0
- Java: 11秒
- スカラ:2.12.17
- Python: 3.10
- デルタ湖:2.4.0
- R: 4.2.2
ヒント
運用環境のワークロードには常に最新の GA ランタイム バージョンを使用します。現在は Runtime 1.3 です。
Fabric Runtime 1.2には、AnacondaのフルインストールやJava/Scala、Python、Rの一般的なライブラリを含む、デフォルトのレベルパッケージのコレクションが付属しています。これらのライブラリは、Fabricプラットフォームでノートブックやジョブを使用する際に自動的に含まれます。 ライブラリの完全な一覧については、ドキュメントを参照してください。 Fabricは定期的にRuntime 1.2向けのメンテナンスアップデートを展開し、バグ修正、パフォーマンス向上、セキュリティパッチを提供しています。 最新の状態を維持することで、データ処理タスクに対する最適なパフォーマンスと信頼性が確保されます。
Spark リリース 3.4.1 の新機能と機能強化
Apache Spark 3.4.0 は、3.x 系列での 5 回目のリリースになります。 オープンソース コミュニティによって推進されるこのリリースでは、2,600 以上の Jira チケットが解決されました。 Spark Connect 用の Python クライアントが導入され、非同期の進行状況追跡と Python のステートフル処理によって構造化ストリーミングが強化されています。 NumPyの入力サポートによりPandas APIのカバレッジを拡大し、従来の倉庫からのANSI準拠や新機能の導入を簡素化します。 また、メモリ プロファイリングにより、開発の生産性とデバッグ性が向上しています。 さらに、Runtime 1.2 は、安定性の修正に重点を置いたメンテナンス リリースである Apache Spark 3.4.1 に基づいています。
主な注目点
Apache Spark の特定のバージョンに関するリリース ノートの完全なバージョンについては、Spark 3.4.0 と Spark 3.4.1 をご覧ください。
新規カスタム クエリ最適化
Spark での同時書き込みのサポート
SQL INSERT INTO クエリを使用して同じテーブルへの並列データ挿入を実行する場合、"操作に失敗しました: 指定したパスが存在しません" というメッセージで 404 エラーが発生する一般的な問題です。 このエラーにより、データが失われる可能性があります。 ファイル出力コミッター アルゴリズムという新機能により、この問題は解決し、お客様は並列データ挿入をシームレスに実行できます。
この機能にアクセスするには、spark.sql.enable.concurrentWrites 機能フラグを有効にします。Runtime 1.2 (Spark 3.4) 以降では、このフラグはデフォルトで有効になります。 この機能は他の Spark 3 バージョンでも使用できますが、デフォルトで有効にはなりません。 この機能では、各同時実行ジョブが同じテーブルの異なるパーティションのデータを動的に上書きする INSERT OVERWRITE クエリの並列実行はサポートされません。 このために Spark で用意されている代替機能は、spark.sql.sources.partitionOverwriteMode の設定を dynamic に構成することでアクティブにできます。
失敗したジョブからのファイルをスキップするスマート読み取り
現在の Spark コミッター システムでは、テーブルへの挿入ジョブが失敗しても、一部のタスクが成功すると、成功したタスクによって生成されたファイルが、失敗したジョブのファイルと共存します。 この共存により、成功したジョブと失敗したジョブに属するファイルを区別することが困難になるため、ユーザーが混乱する可能性があります。 さらに、あるジョブがテーブルからの読み取りを行っている間に、別のジョブが同じテーブルに同時にデータを挿入すると、読み取りジョブがコミットされていないデータにアクセスする可能性があります。 書き込みジョブが失敗した場合、読み取りジョブが正しくないデータを処理する可能性があります。
この問題に対処する新機能は、spark.sql.auto.cleanup.enabled フラグによって制御されます。 有効にすると、Spark は、spark.read を実行するとき、またはテーブルからクエリを選択するときに、コミットされていないファイルの読み取りを自動的にスキップします。 この機能を有効にする前に書き込まれたファイルは、引き続き通常どおり読み取られます。
見た目には次のような点が変わります。
- すべてのファイルのファイル名に、
tid-{jobID}識別子が含まれるようになります。 - ジョブの正常完了時に出力場所に通常作成される
_successマーカーの代わりに、新規_committed_{jobID}マーカーが生成されます。 このマーカーは、成功したジョブの ID と特定のファイル名を関連付けます。 - ストレージを管理し、コミットされていないファイルをクリーンアップするためにユーザーが定期的に実行できる、新規 SQL コマンドが導入されました。 このコマンドの構文は次のとおりです。
- 特定のディレクトリをクリーンアップする:
CLEANUP ('/path/to/dir') [RETAIN number HOURS]; - 特定のテーブルをクリーンアップする:
CLEANUP [db_name.]table_name [RETAIN number HOURS];この構文で、path/to/dirはクリーンアップが必要な場所の URI を表し、numberは保持期間を表す double 型の値です。 デフォルトの保持期間は 7 日間に設定されます。
- 特定のディレクトリをクリーンアップする:
-
spark.sql.deleteUncommittedFilesWhileListingという新規構成オプションが導入されました。このオプションはデフォルトでfalseに設定されます。 このオプションを有効にすると、コミットされていないファイルは読み取りの間に自動的に削除されますが、このシナリオでは読み取り操作が遅くなる可能性があります。 このフラグを有効にするのではなく、クラスターがアイドル状態のときにクリーンアップ コマンドを手動で実行することをお勧めします。
Runtime 1.1 から Runtime 1.2 への移行ガイド
Apache Spark 3.3 搭載の Runtime 1.1 を Apache Spark 3.4 搭載の Runtime 1.2 に移行するときは、公式の移行ガイドを確認してください。
Delta Lake 2.4 の新機能と機能強化
Delta Lake は、データ レイクの上にLakehouse アーキテクチャを構築できるようにするオープンソース プロジェクトです。 Delta Lake は、ACID トランザクションとスケーラブルなメタデータ処理を提供し、既存のデータ レイク上のストリーミングとバッチ データ処理を統合します。
具体的には、Delta Lake は次の機能を提供します。
- Spark での ACID トランザクション: Serializable 分離レベルでは、リーダーが不整合なデータを表示しないようにします。
- スケーラブルなメタデータ処理: Spark の分散処理能力を使って、ペタバイト規模のテーブルと数十億のファイルのすべてのメタデータを簡単に処理します。
- ストリーミングとバッチの統合: Delta Lake 内のテーブルは、バッチ テーブルであり、ストリーミングのソースとシンクです。 ストリーミング データの取り込み、バッチ履歴バックフィル、対話型クエリは、すべてすぐに機能します。
- スキーマの適用: 取り込み中に無効なレコードが挿入されないように、スキーマのバリエーションを自動的に処理します。
- タイム トラベル: データのバージョン管理により、ロールバック、完全な履歴監査証跡、および再現可能な機械学習の実験が可能になります。
- アップサートと削除: マージ、更新、削除操作をサポートし、変更データ キャプチャ、ゆっくり変化するディメンション (SCD) の操作、ストリーミング アップサートなどの複雑なユース ケースを可能にします。
Delta Lake 2.4 のリリース ノートの完全なバージョンをご覧ください。
Java、Scala、Python ライブラリのデフォルトレベル パッケージ
Java、Scala、Python、およびそれぞれのバージョンのすべてのデフォルトのレベル パッケージの一覧については、「リリース ノート」を参照してください。