翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
きめ細かなアクセスコントロールを備えた Apache Hudi
Amazon EMR リリース 6.15.0 以降には、Spark SQL AWS Lake Formation でデータを読み書きするときの Apache Hudi による に基づくきめ細かなアクセスコントロールのサポートが含まれています。Amazon EMR は、Apache Hudi を使用した、テーブル、行、列、セルレベルのアクセスコントロールをサポートしています。この機能を利用してコピーオンライトテーブルに対してスナップショットクエリを実行することで、特定のコミットまたは圧縮の瞬間におけるテーブルの最新のスナップショットをクエリすることができます。
現在、Lake Formation 対応の Amazon EMR クラスターは、増分クエリとタイムトラベルクエリを実行するために Hudi のコミット時間列を取得する必要があります。Spark の timestamp as of 構文と Spark.read() 関数はサポートされていません。正しい構文は select * from table where _hoodie_commit_time <= point_in_time です。詳細については、「Point in time Time-Travel queries on Hudi table
以下のサポートマトリックスには、Apache Hudi と Lake Formation の連携の主要機能の一部がリストされています。
| Copy on Write | 読み取り時マージ | |
|---|---|---|
|
スナップショットクエリ - Spark SQL |
✓ |
✓ |
|
読み取り最適化クエリ - Spark SQL |
✓ |
✓ |
|
増分クエリ |
✓ |
✓ |
|
タイムトラベルクエリ |
✓ |
✓ |
|
メタデータテーブル |
✓ |
✓ |
|
DML |
✓ |
✓ |
|
DDL コマンド |
||
|
Spark データソースクエリ |
||
|
Spark データソース書き込み |
Hudi テーブルのクエリ
このセクションでは、Lake Formation 対応クラスターで前述のサポート対象クエリを実行する方法を示します。テーブルは、登録済みのカタログテーブルである必要があります。
-
EMR 7.10 以降のバージョンで Spark シェルを起動するには、次のコマンドを使用します。
spark-sql --jars /usr/lib/hudi/hudi-spark-bundle.jar \ --conf spark.sql.catalog.spark_catalog=org.apache.spark.sql.hudi.catalog.HoodieCatalog \ --conf spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtension以前の EMR バージョンで Spark シェルを起動するには、代わりに次のコマンドを使用します。
spark-sql --jars /usr/lib/hudi/hudi-spark-bundle.jar \ --conf spark.serializer=org.apache.spark.serializer.KryoSerializer \ --conf spark.sql.catalog.spark_catalog=org.apache.spark.sql.hudi.catalog.HoodieCatalog \ --conf spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtension,com.amazonaws.emr.recordserver.connector.spark.sql.RecordServerSQLExtension \ --conf spark.sql.catalog.spark_catalog.lf.managed=true -
copy-on-write テーブルの最新のスナップショットをクエリするには、次のコマンドを使用します。
SELECT * FROMmy_hudi_cow_tablespark.read.table("my_hudi_cow_table") -
MORテーブルの最新の圧縮データをクエリするには、読み取り最適化テーブル (サフィックス_ro付き) に対するクエリを実行します。SELECT * FROMmy_hudi_mor_table_rospark.read.table("my_hudi_mor_table_ro")
注記
Lake Formation クラスターでの読み取りのパフォーマンスは、最適化がサポートされていないために低くなる可能性があります。これらの機能には、Hudi メタデータに基づくファイルリストやデータスキップなどがあります。アプリケーションのパフォーマンスをテストして、要件を満たしているか確認することをお勧めします。