次の方法で共有


データの標準化

データは、さまざまな形式で Data Lake アカウントに到着します。 これらの形式には、JSON などの人間が判読できる形式が含まれます。CSV または XML ファイル、および圧縮バイナリ形式 (.tarや.gzなど)。 また、データの到着には、いくつかの編集済みファイルから SQL テーブル全体のエクスポートまで、さまざまなサイズがあります。 データは、IoT ソリューションからのリアルタイム イベントなど、数 KB 単位の多数の小さなファイルとしても使用できます。

Azure Data Lake Storage Gen2 ではあらゆる種類のデータのストレージを制限なくサポートしていますが、処理パイプラインの効率を確保し、コストを最適化するために、データ形式を慎重に検討する必要があります。

多くの組織では、取り込み形式を標準化し、コンピューティングをストレージから分離するようになりました。 このため、Delta Lake 形式は、エンリッチメント レイヤーへのデータ インジェストの推奨される標準となっています。 エンリッチメント レイヤーから、データ アプリケーション チームは、ユース ケースを反映した形式でデータを提供できます。

Delta Lake を使用して、最初のデータ インジェストからエンリッチメント レイヤーまでのバッチとストリーミングの両方のユース ケースをサポートします。

この記事では、Delta Lake の概要、そのパフォーマンス、コンプライアンスサポートの実現に役立つ方法、およびソースからエンリッチメント レイヤーにデータを流れる際にデータを標準化する方法について説明します。

Delta Lake

Delta Lake は、ACID (原子性、整合性、分離性、持続性) トランザクションをビッグ データ ワークロードと Apache Spark に提供するオープンソースストレージレイヤーです。 Azure Databricks は Linux Foundation Delta Lake と互換性があります。

Delta Lake の主な機能

特徴 説明
ACID トランザクション 通常、データ レイクは複数のプロセスとパイプラインを介して設定され、その一部は読み取りと同時にデータを書き込みます。 データ エンジニアは、Delta Lake とトランザクションが使用される前にデータの整合性を確保するために、エラーが発生しやすい手動プロセスを実行しました。 Delta Lake によって、使い慣れた ACID トランザクションがデータ レイクに導入されます。 これは、最も強力な分離レベル、シリアル化可能性を提供します。 詳細については、「 Delta Lake への飛び込み: トランザクション ログの開梱」を参照してください。
スケーラブルなメタデータの処理 ビッグ データでは、メタデータであっても "ビッグ データ" になる可能性があります。 Delta Lake はメタデータを他のデータと同じように扱います。 Spark の分散処理能力を使用して、すべてのメタデータを処理します。 このため、Delta Lake では、数十億のパーティションとファイルを含むペタバイト規模のテーブルを簡単に処理できます。
タイム トラベル (データのバージョン管理) 変更を "元に戻す" 機能や以前のバージョンに戻る機能は、トランザクションの重要な機能です。 Delta Lake では、データのスナップショットが提供されるため、監査、ロールバック、または実験の再現のために、以前のバージョンのデータに戻すことができます。 詳細については、「大規模データ レイク向けの Delta Lake タイム トラベルの紹介」を参照してください。
オープン形式 Delta Lake のベースライン形式である Apache Parquet を使用すると、効率的な圧縮とエンコード スキームを適用できます。
バッチとストリーミング ソースとシンクの統合 Delta Lake のテーブルは、同時にバッチ テーブルとストリーミング ソースとシンクです。 データ取り込みストリーミング、バッチ履歴バックフィル、対話型クエリはすべてすぐに使用できます。
スキーマの適用 スキーマの適用は、正しいデータ型と必要な列を確保するのに役立ちます。これにより、データの不整合が不適切なデータから回避されます。 詳細については、Delta Lake の詳細: スキーマの適用と展開に関する記事を参照してください
スキーマの展開 Delta Lake を使用すると、移行 DDL を記述しなくても、テーブル スキーマに自動的に変更を適用できます。 詳細については、Delta Lake の詳細: スキーマの適用と展開に関する記事を参照してください
[監査履歴] Delta Lake トランザクション ログには、データに加えられたすべての変更に関する詳細が記録されます。 これらのレコードは、すべての変更の完全な監査証跡を提供します。
更新と削除 Delta Lake では、さまざまな機能に対して Scala、Java、Python、SQL API がサポートされています。 マージ、更新、および削除操作のサポートは、コンプライアンス要件を満たすのに役立ちます。 詳細については、Delta Lake 0.6.1 リリースの発表Delta Lake 0.7 リリースの発表、および Simple、Reliable Upserts and Deletes on Delta Lake Tables(マージ、更新、および削除 DML コマンドのコードスニペットを含む)をPython APIを使用して参照してください。
100% Apache Spark API と互換性がある 開発者は、既存の Spark 実装と完全に互換性があるため、既存のデータ パイプラインの変更を最小限に抑えて Delta Lake を使用できます。

詳細については、Delta Lake プロジェクトを参照してください。

完全なドキュメントについては、Delta Lake のドキュメント ページを参照してください。

[パフォーマンス]

多くの小さなファイルを使用すると、多くの場合、読み取り/リスト操作の増加によるパフォーマンスが最適でなく、コストが高くなります。 Azure Data Lake Storage Gen2 は、分析ジョブをより高速かつ低コストで実行できる、より大きなファイル用に最適化されています。

Delta Lake には、 ファイル管理でパフォーマンスを最適化するのに役立つ多くの機能が含まれています。

たとえば、次のようになります。

  • トランザクション ログは、コストの高い LIST 操作を最小限に抑えます。
  • Z オーダー (多次元クラスタリング) を使用すると、クエリ フィルターの述語プッシュダウンを最適化できます。
  • ネイティブ キャッシュとクエリの最適化により、必要なストレージ スキャンの量が減ります。 詳細については、「 キャッシュによるパフォーマンスの最適化」を参照してください。
  • OPTIMIZE は、小さなファイルを大きなファイルに結合します。

これらの最適化をデータ読み込みプロセスの一部にして、データの鮮度とパフォーマンスを維持します。

データレイクのパーティショニング

データのパーティション分割では、大規模なデータを管理し、データ アクセスを制御できるように、データ ストア内のデータを整理する必要があります。 パーティション分割により、スケーラビリティの向上、競合の低減、パフォーマンスの最適化を実現できます。

データ レイクをパーティション分割するときは、次の設定を確認します。

  • セキュリティを侵害しない
  • 明確な分離性を持ち、データ承認モデルに合わせて調整する
  • データ インジェスト プロセスに適しています
  • 最適なデータ アクセスのための明確に定義されたパスがある
  • 管理タスクとメンテナンス タスクをサポートします

一般的なプラクティス

データパーティション分割設計の一般的なプラクティスは次のとおりです。

  • セキュリティへの影響に早期に焦点を当て、承認と共にデータ パーティションを設計します。
  • セキュリティと引き換えにデータの冗長性を許可したい場合があります。名前付け規則を定義し、それに従います。
  • 複数のフォルダーを入れ子にすることはできますが、常に一貫性を保つようにしてください。
  • フォルダー構造とファイル名に time 要素を含めます。
  • 日付パーティションを使用してフォルダー構造を開始しないでください。 日付はフォルダー レベルを下げておくことをお勧めします。
  • 1 つのフォルダー構造で、混合ファイル形式や異なるデータ製品を組み合わせないでください。

ヒント

フォルダー構造には、アクセス パターンと適切なファイル サイズを最適化できるパーティション分割戦略が必要です。 キュレーションされたゾーンでは、最適な取得を基に構造を計画し、カーディナリティが高すぎるパーティションキーを選ぶと、パーティショニングが過剰になり、その結果、ファイルサイズが最適ではないことに注意してください。

Data Lake ゾーンの詳細を確認するには、Data Lake ゾーンとコンテナーについての詳細を確認してください。

コンプライアンスサポート

Delta Lake では、トランザクション レイヤーを追加して、データ レイクの上に構造化されたデータ管理を提供します。 この追加により、消費者の要求に応じて個人情報 ("個人データ" とも呼ばれます) を見つけて削除する機能が大幅に簡素化され、高速化されます。 トランザクション レイヤーでは、DELETE、UPDATE、MERGE などの操作がサポートされています。 詳細については、「 ベスト プラクティス: Delta Lake を使用した GDPR コンプライアンス」を参照してください

概要

この記事に記載されているデータ標準化をプラットフォームに適用します。 Delta Lake 形式から始めて、最適化とコンプライアンスのためのプロセスの追加を開始します。 スケジュールに従って最適化ルートの一部を実行するサービスを作成するか、個人情報を削除するコンプライアンス サービスを作成することができます。

次のステップ