Delta Lake と Lake Formation - Amazon EMR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Delta Lake と Lake Formation

Amazon EMRリリース 6.15.0 以降には、Spark AWS Lake Formation でデータを読み書きする場合の Delta Lake による に基づくきめ細かなアクセスコントロールのサポートが含まれていますSQL。Amazon EMR は、Delta Lake によるテーブル、行、列、およびセルレベルのアクセスコントロールをサポートしています。この機能を使用すると、 copy-on-write テーブルに対してスナップショットクエリを実行して、特定のコミットまたは圧縮の瞬間にテーブルの最新のスナップショットをクエリできます。

Lake Formation で Delta Lake を使用するには、次のコマンドを実行します。

spark-sql \ --conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension,com.amazonaws.emr.recordserver.connector.spark.sql.RecordServerSQLExtension \ --conf spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog \ --conf spark.sql.catalog.spark_catalog.lf.managed=true

Lake Formation でレコードサーバーを使用して Spark カタログを管理する場合は、 spark.sql.catalog.<managed_catalog_name>.lf.managedを true に設定します。

次のサポートマトリックスは、Lake Formation を使用した Delta Lake のいくつかのコア機能を示しています。

Copy on Write 読み取り時マージ

スナップショットクエリ - Spark SQL

読み取り最適化クエリ - Spark SQL

増分クエリ

サポートされません

サポートされません

タイムトラベルクエリ

サポートされません

サポートされません

メタデータテーブル

DML INSERT コマンド

DDL コマンド

Spark データソースクエリ

Spark データソース書き込み

AWS Glue データカタログでの Delta Lake テーブルの作成

Lake Formation EMRを使用した Amazon は、DDLコマンドと Delta テーブルの作成をサポートしていません。 AWS Glue データカタログにテーブルを作成するには、次の手順に従います。

  1. 次の例を使用して Delta テーブルを作成します。S3 の場所が存在することを確認します。

    spark-sql \ --conf "spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension" \ --conf "spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog" > CREATE DATABASE if not exists <DATABASE_NAME> LOCATION 's3://<S3_LOCATION>/transactionaldata/native-delta/<DATABASE_NAME>/'; > CREATE TABLE <TABLE_NAME> (x INT, y STRING, z STRING) USING delta; > INSERT INTO <TABLE_NAME> VALUES (1, 'a1', 'b1');
  2. テーブルの詳細を確認するには、「」を参照してくださいhttps://console.aws.amazon.com/glue/

  3. 左側のナビゲーションで、データカタログ を展開し、テーブル を選択し、作成したテーブルを選択します。スキーマ では、Spark で作成した Delta テーブルに、 AWS Glue のデータ型のすべての列が保存されていることがわかりarray<string>ます。

  4. Lake Formation で列とセルレベルのフィルターを定義するには、スキーマからcol列を削除し、テーブルスキーマにある列を追加します。この例では、列 x、、yおよび を追加しますz