翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Glue データカタログビューの使用
EMR Serverless で使用する AWS Glue データカタログでビューを作成および管理できます。これらは一般的に AWS Glue データカタログビューと呼ばれます。これらのビューは複数の SQL クエリエンジンをサポートしているため、EMR Serverless、Amazon Redshift などのさまざまな AWS サービス間で同じビューにアクセスできるため Amazon Athena便利です。
Data Catalog でビューを作成することで、 でリソース許可とタグベースのアクセスコントロールを使用して AWS Lake Formation 、そのビューへのアクセスを許可できます。このアクセスコントロール方法を使用すると、ビューの作成時に参照したテーブルへの追加のアクセスを設定する必要はありません。アクセス許可を付与するこの方法は、definer セマンティクスと呼ばれ、これらのビューは definer ビューと呼ばれます。Lake Formation でのアクセスコントロールの詳細については、 AWS Lake Formation デベロッパーガイドの「データカタログリソースに対するアクセス許可の付与と取り消し」を参照してください。
データカタログビューは、次のユースケースに役立ちます。
細やかなアクセス制御 – ユーザーが必要とするアクセス許可に基づいてデータアクセスを制限するビューを作成できます。例えば、データカタログのビューを使用して、人事 (HR) 部門に属さない従業員が個人を特定できる情報 (PII) を表示できないようにすることができます。
完全なビュー定義 – データカタログのビューにフィルターを適用することで、データカタログのビューで使用可能なデータレコードが常に完了していることを確認します。
セキュリティの強化 – ビューの作成に使用されるクエリ定義は完了している必要があります。この利点は、データカタログ内のビューが悪意のあるアクターからの SQL コマンドの影響を受けにくいことを意味します。
データを簡単に共有 – データを移動せずに他の AWS アカウントとデータを共有します。詳細については、「Cross-account data sharing in Lake Formation」を参照してください。
データカタログビューの作成
データカタログビューを作成するには、さまざまな方法があります。これには、 AWS CLI または Spark SQL の使用が含まれます。以下にいくつかの例を示します。
サポートされているビュー操作
以下のコマンドフラグメントは、データカタログビューを操作するさまざまな方法を示します。
CREATE VIEW
データカタログビューを作成します。以下は、既存のテーブルからビューを作成する例です。
CREATE PROTECTED MULTI DIALECT VIEW catalog_view SECURITY DEFINER AS SELECT * FROM my_catalog.my_database.source_table
ALTER VIEW
使用可能な構文:
ALTER VIEW view_name [FORCE] ADD DIALECT AS query
ALTER VIEW view_name [FORCE] UPDATE DIALECT AS query
ALTER VIEW view_name DROP DIALECT
FORCE ADD DIALECT
オプションを使用して、新しいエンジンダイアレクトに従ってスキーマとサブオブジェクトを強制的に更新できます。ただし、これを行うと、他のエンジンダイアレクトの更新にもFORCE
を使用しないと、クエリエラーが発生する可能性があることに注意してください。サンプルを以下に示します。ALTER VIEW catalog_view FORCE ADD DIALECT AS SELECT order_date, sum(totalprice) AS price FROM source_table GROUP BY orderdate;
以下は、ダイアレクトを更新するためにビューを変更する方法を示します。
ALTER VIEW catalog_view UPDATE DIALECT AS SELECT count(*) FROM my_catalog.my_database.source_table;
DESCRIBE VIEW
ビューを記述するために使用できる構文:
SHOW COLUMNS {FROM|IN} view_name [{FROM|IN} database_name]
– ユーザーにビューを記述するために必要な AWS Glue および Lake Formation アクセス許可がある場合は、列を一覧表示できます。列を表示するためのいくつかのサンプルコマンドを以下に示します。SHOW COLUMNS FROM my_database.source_table; SHOW COLUMNS IN my_database.source_table;
DESCRIBE view_name
– ユーザーにビューを記述するために必要な AWS Glue および Lake Formation アクセス許可がある場合、ビュー内の列とそのメタデータを一覧表示できます。
DROP VIEW
使用可能な構文:
DROP VIEW [ IF EXISTS ] view_name
次のサンプルは、ビューを削除する前にビューが存在するかどうかをテストする
DROP
ステートメントを示します。DROP VIEW IF EXISTS catalog_view;
作成ビューを表示する
SHOW CREATE VIEW view_name
– 指定したビューを作成する SQL ステートメントを示します。以下は、データカタログビューの作成を示すサンプルです。SHOW CREATE TABLE my_database.catalog_view; CREATE PROTECTED MULTI DIALECT VIEW my_catalog.my_database.catalog_view ( net_profit, customer_id, item_id, sold_date) TBLPROPERTIES ( 'transient_lastDdlTime' = '1736267222') SECURITY DEFINER AS SELECT * FROM my_database.store_sales_partitioned_lf WHERE customer_id IN (SELECT customer_id from source_table limit 10)
SHOW VIEWS
正規ビュー、マルチダイアレクトビュー (MDV)、Spark ダイアレクトのない MDV など、カタログ内のすべてのビューを一覧表示します。使用可能な構文は次のとおりです。
SHOW VIEWS [{ FROM | IN } database_name] [LIKE regex_pattern]
:ビューを表示するサンプルコマンドを以下に示します。
SHOW VIEWS IN marketing_analytics LIKE 'catalog_view*';
データカタログビューの作成と設定の詳細については、 AWS Lake Formation デベロッパーガイドAWS の「 Glue データカタログビューの構築」を参照してください。
データカタログビューをクエリする
データカタログビューを作成したら、 AWS Lake Formation きめ細かなアクセスコントロールが有効になっている Amazon EMR Serverless Spark ジョブを使用してクエリを実行できます。ジョブランタイムロールには、データカタログビューに対する Lake Formation アクセスSELECT
許可が必要です。ビューで参照される基盤となるテーブルへのアクセスを許可する必要はありません。
すべてをセットアップしたら、ビューをクエリできます。たとえば、EMR Studio で EMR Serverless アプリケーションを作成した後、次のクエリを実行してビューにアクセスできます。
SELECT * from
my_database
.catalog_view
LIMIT 10;
便利な関数は ですinvoker_principal
。EMRS ジョブランタイムロールの一意の識別子を返します。これは、呼び出しプリンシパルに基づいてビュー出力を制御するために使用できます。これを使用して、呼び出し元のロールに基づいてクエリ結果を絞り込む条件をビューに追加できます。この関数を使用するには、ジョブランタイムロールに IAM LakeFormation:GetDataLakePrincipal
アクションに対するアクセス許可が必要です。
select invoker_principal();
例えば、この関数をWHERE
句に追加して、クエリ結果を絞り込むことができます。
考慮事項と制限事項
Data Catalog ビューを作成すると、以下が適用されます。
データカタログビューは、Amazon EMR 7.6 以降でのみ作成できます。
Data Catalog ビュー定義者は、ビューによってアクセスされる基盤となるベーステーブルに対する
SELECT
アクセスを持っている必要があります。特定のベーステーブルに定義者ロールに対する Lake Formation フィルターが適用されている場合、データカタログビューの作成は失敗します。ベーステーブルには、Lake Formation
IAMAllowedPrincipals
のデータレイクアクセス許可があってはなりません。付与されている場合は、Multi Dialect views may only reference tables without IAMAllowedPrincipals permissions というエラーが表示されます。テーブルの Amazon S3 の場所は、Lake Formation データレイクの場所として登録する必要があります。テーブルが登録されていない場合、エラーのマルチダイアレクトビューは Lake Formation マネージドテーブルのみを参照する場合があります。Lake Formation で Amazon S3 ロケーションを登録する方法については、「 AWS Lake Formation デベロッパーガイド」のAmazon S3ロケーションの登録」を参照してください。
PROTECTED
データカタログビューのみを作成できます。UNPROTECTED
ビューはサポートされていません。データカタログビュー定義の別の AWS アカウントのテーブルを参照することはできません。また、別のリージョンにあるのと同じアカウントのテーブルを参照することはできません。
アカウントまたはリージョン間でデータを共有するには、Lake Formation リソースリンクを使用してビュー全体をクロスアカウントおよびクロスリージョンで共有する必要があります。
ユーザー定義関数 (UDF) はサポートされていません。
Iceberg テーブルに基づくビューを使用できます。オープンテーブル形式の Apache Hudi と Delta Lake もサポートされています。
データカタログビューで他のビューを参照できません。
AWS Glue データカタログビュースキーマは常に小文字を使用して保存されます。たとえば、DDL ステートメントを使用して という名前の列を持つ Glue データカタログビューを作成すると
Castle
、 Glue データカタログで作成された列は に小文字になりますcastle
。次に、DML クエリで列名をCastle
または として指定するとCASTLE
、EMR Spark はクエリを実行するために名前を小文字にします。ただし、列見出しは、クエリで指定した大文字と小文字を使用して表示されます。DML クエリで指定された列名が Glue データカタログの列名と一致しない場合にクエリを失敗させるには、 を設定できます
spark.sql.caseSensitive=true
。