

# Hudi メタデータを使用してパフォーマンスを改善する
<a name="querying-hudi-metadata-table"></a>

Apache Hudi には、ファイルの一覧表示、列統計を使用したデータのスキップ、ブルームフィルターベースのインデックスなど、パフォーマンスを改善するためのインデックス機能を含む[メタデータテーブル](https://hudi.apache.org/docs/next/metadata/)があります。

これらの機能のうち、Athena は現在、ファイルリストインデックスのみをサポートしています。ファイルリストインデックスは、ファイルに対するパーティションのマッピングを維持するインデックスから情報を取得することにより、「ファイルのリスト」などのファイルシステム呼び出しを排除します。これにより、ファイルシステムのビューを取得するために、テーブルパスの下のすべてのパーティションを再帰的にリストする必要がなくなります。大規模なデータセットを扱う場合、このインデックス作成により、書き込みやクエリ中にファイルのリストを取得するときに発生するレイテンシーが大幅に低減されます。また、Amazon S3 `LIST` 呼び出しでのリクエスト制限のスロットリングなどのボトルネックも回避できます。

**注記**  
現時点では、Athena はデータスキップやブルームフィルターインデックス作成をサポートしていません。

## Hudi メタデータテーブルの有効化
<a name="querying-hudi-metadata-table-enabling-the-hudi-metadata-table"></a>

メタデータテーブルベースのファイルリストはデフォルトでは無効になっています。Hudi メタデータテーブルと関連ファイルのリスト機能を有効にするには、`hudi.metadata-listing-enabled` テーブルプロパティを `TRUE` に設定します。

**例**  
次の`ALTER TABLE SET TBLPROPERTIES` の例では、サンプル `partition_cow` テーブルでメタデータテーブルを有効にします。

```
ALTER TABLE partition_cow SET TBLPROPERTIES('hudi.metadata-listing-enabled'='TRUE')
```

## ブートストラップ生成メタデータを使用する
<a name="querying-hudi-hudi-dataset-table-types-bootstrap"></a>

Apache Hudi バージョン 0.6.0 以降では、ブートストラップ操作機能によって、既存の Parquet データセットのパフォーマンスが向上します。ブートストラップ操作では、データセットを書き換える代わりに、メタデータのみを生成し、データセットはそのまま残すことができます。

Athena を使用して、Amazon S3 のデータに基づいて他のテーブルと同様に、ブートストラップ操作からテーブルをクエリできます。`CREATE TABLE` ステートメントで、`LOCATION` 句で Hudi テーブルのパスを指定します。

Amazon EMR で、ブートストラップオペレーションを使用して Hudi テーブルを作成する方法の詳細については、「AWS ビッグデータブログ」の記事「[New features from Apache Hudi available in Amazon EMR](https://aws.amazon.com/blogs/big-data/new-features-from-apache-hudi-available-in-amazon-emr/)」(Amazon EMR で利用可能な Apache Hudi の新機能) を参照してください。