すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:Hudi

最終更新日:Jun 23, 2026

Apache Hudi は、Hadoop ファイルシステム上で変更データの更新、削除、および利用をサポートするデータレイクストレージフォーマットです。

Hudi のテーブルタイプ

Hudi は、次の 2 つのテーブルタイプをサポートしています:

  • Copy On Write

    データを Parquet ファイルフォーマットで格納します。Copy On Write テーブルの更新には、書き換え操作が必要です。

  • Merge On Read

    ベースデータを列指向フォーマット (Parquet) で、増分データを行指向フォーマット (Avro) で格納します。コンパクション操作は、設定可能なポリシーに基づいて、定期的に増分データを列指向ファイルにマージします。

次の表は、2 つのテーブルタイプを比較したものです。

トレードオフ

Copy On Write

Merge On Read

データレイテンシー

クエリレイテンシー

更新コスト (I/O)

高 (Parquet ファイル全体を書き換えるため)

低 (デルタログに追加するため)

Parquet ファイルサイズ

小 (更新時の I/O オーバーヘッドが高いため)

大 (更新時のオーバーヘッドが低いため)

書き込み増幅

高 (書き込み増幅が大きいため)

低 (マージポリシーに依存)

Hudi のクエリタイプ

Hudi は、次の 3 つのクエリタイプをサポートしています:

  • スナップショットクエリ

    最新のコミットスナップショットからデータをクエリします。Merge On Read テーブルの場合、スナップショットクエリはベースの列指向データとリアルタイムのログデータをマージします。Copy On Write テーブルの場合、スナップショットクエリは Parquet データの最新バージョンを返します。

    Copy On Write テーブルと Merge On Read テーブルは、どちらもこのクエリタイプをサポートしています。

  • 増分クエリ

    特定のコミット後に書き込まれたデータをクエリします。

    Copy On Write テーブルと Merge On Read テーブルは、どちらもこのクエリタイプをサポートしています。

  • 読み取り最適化クエリ

    最新のコンパクション済みデータを返します。Merge On Read テーブルの場合、このクエリタイプは、データの鮮度を犠牲にして、ログデータのオンラインマージをスキップすることでレイテンシーを削減します。

次の表は、クエリタイプを比較したものです。

トレードオフ

スナップショットクエリ

読み取り最適化クエリ

データレイテンシー

クエリレイテンシー

高 (Merge On Read テーブルの場合)

シナリオ

  • ほぼリアルタイムのデータインジェスト

    Hudi は挿入、更新、削除の操作をサポートしています。Kafka や Simple Log Service (SLS) などのサービスからのログデータをリアルタイムで Hudi にインジェストできます。Hudi は、データベースのバイナリロギング (binlog) からの変更データのリアルタイム同期もサポートしています。

    Hudi は、データ書き込み中に生成される小さなファイルを最適化します。これにより、Hudi は従来のファイル形式よりも HDFS 上で効率的に動作します。

  • ほぼリアルタイムのデータ分析

    Hudi は、Hive、Spark、Presto、Impala など、複数の分析エンジンと連携して動作します。ファイルフォーマットとして、Hudi は追加のサービスプロセスを必要としないため、軽量です。

  • 増分データ処理

    Hudi は増分クエリをサポートしており、Spark Streaming を使用して特定のコミット後に変更されたデータを取得し、HDFS から変更データを利用することができます。