

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

# AWS Lake Formation での EMR Serverless を使用したきめ細かなアクセスコントロール
<a name="emr-serverless-lf-enable"></a>

## 概要
<a name="emr-serverless-lf-enable-overview"></a>

Amazon EMR リリース 7.2.0 以降では、 AWS Lake Formation を活用して、S3 でバックアップされた Data Catalog テーブルにきめ細かなアクセスコントロールを適用します。この機能を使用すると、Amazon EMR Serverless Spark ジョブ内の read クエリにテーブル、行、列、セルレベルのアクセスコントロールを設定できます。Apache Spark バッチジョブとインタラクティブセッションできめ細かなアクセスコントロールを設定するには、EMR Studio を使用します。Lake Formation の詳細と EMR Serverless での使用方法については、以下のセクションを参照してください。

で Amazon EMR Serverless AWS Lake Formation を使用すると、追加料金が発生します。詳細については、「[Amazon EMR の料金](https://aws.amazon.com/emr/pricing/)」を参照してください。

## EMR Serverless と の連携方法 AWS Lake Formation
<a name="emr-serverless-lf-enable-how-it-works"></a>

EMR Serverless と Lake Formation を使用すると、各 Spark ジョブにアクセス許可のレイヤーを適用して、EMR Serverless がジョブを実行するときに Lake Formation アクセス許可コントロールを適用できます。EMR Serverless は、[Spark リソースプロファイル](https://spark.apache.org/docs/latest/api/java/org/apache/spark/resource/ResourceProfile.html)を使用して 2 つのプロファイルを作成し、ジョブを効果的に実行します。ユーザープロファイルはユーザー提供のコードを実行し、システムプロファイルは Lake Formation ポリシーを適用します。詳細については、「[AWS Lake Formationとは](https://docs.aws.amazon.com/lake-formation/latest/dg/what-is-lake-formation.html)」および「[考慮事項と制限事項](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/emr-serverless-lf-enable-considerations.html)」を参照してください。

Lake Formation で事前初期化された容量を使用する場合は、少なくとも 2 つの Spark ドライバーを使用することを提案します。Lake Formation 対応ジョブごとに 2 つの Spark ドライバー (1 つはユーザープロファイル用、1 つはシステムプロファイル用) を使用します。最高のパフォーマンスを得るには、Lake Formation を使用しない場合と比較して、Lake Formation 対応ジョブのドライバーの数を 2 倍にします。

EMR Serverless で Spark ジョブを実行するときは、リソース管理とクラスターパフォーマンスに対する動的割り当ての影響も考慮します。リソースプロファイルあたりのエグゼキュターの最大数である `spark.dynamicAllocation.maxExecutors` の設定は、ユーザーエグゼキュターとシステムエグゼキュターに適用されます。その数を最大許容エグゼキュター数と等しく設定すると、利用可能なすべてのリソースを使用する 1 つのタイプのエグゼキュターが原因でジョブの実行が停止し、ジョブの実行時に他のエグゼキュターが使用できなくなる可能性があります。

したがって、リソースが不足しないように、EMR Serverless はリソースプロファイルあたりのデフォルトの最大エグゼキュター数を `spark.dynamicAllocation.maxExecutors` 値の 90% に設定します。この設定は、`spark.dynamicAllocation.maxExecutorsRatio` を 0 から 1 までの値で指定すると上書きできます。さらに、リソースの割り当てと全体的なパフォーマンスを最適化するために、次のプロパティを設定します。
+ `spark.dynamicAllocation.cachedExecutorIdleTimeout`
+ `spark.dynamicAllocation.shuffleTracking.timeout`
+ `spark.cleaner.periodicGC.interval`

以下は、EMR Serverless が Lake Formation セキュリティポリシーで保護されたデータにアクセスする方法の概要を示します。

![Amazon EMR が Lake Formation セキュリティポリシーで保護されているデータにアクセスする方法。](http://docs.aws.amazon.com/ja_jp/emr/latest/EMR-Serverless-UserGuide/images/lf-emr-s-architecture.png)


1. ユーザーは、Spark ジョブを AWS Lake Formation有効な EMR Serverless アプリケーションに送信します。

1. EMR Serverless はジョブをユーザードライバーに送信し、ユーザープロファイルでジョブを実行します。ユーザードライバーは、タスクの起動、エグゼキュターのリクエスト、S3 または Glue カタログへのアクセスができない Spark のリーンバージョンを実行します。ジョブプランを構築します。

1. EMR Serverless は、システムドライバーと呼ばれる 2 番目のドライバーを設定し、システムプロファイルで (特権 ID を使用して) 実行します。EMR Serverless は、通信用の 2 つのドライバー間に暗号化された TLS チャネルを設定します。ユーザードライバーはチャネルを使用して、ジョブプランをシステムドライバーに送信します。システムドライバーは、ユーザーが送信したコードを実行しません。フル Spark を実行して、データアクセスのために S3 およびデータカタログと通信します。エグゼキュターをリクエストし、ジョブプランを一連の実行ステージにコンパイルします。

1. 次に、EMR Serverless はユーザードライバーまたはシステムドライバーを使用してエグゼキュターでステージを実行します。どのステージのユーザーコードも、ユーザープロファイルのエグゼキュターでのみ実行されます。

1. で保護された Data Catalog テーブルからデータを読み取るステージ AWS Lake Formation 、またはセキュリティフィルターを適用するステージは、システムエグゼキュターに委任されます。

## Amazon EMR での Lake Formation の有効化
<a name="emr-serverless-lf-enable-config"></a>

Lake Formation を有効にするには、[EMR Serverless アプリケーションの作成](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/getting-started.html#gs-application-console)時に、ランタイム設定パラメータの `spark-defaults` 分類で `spark.emr-serverless.lakeformation.enabled` を `true` に設定します。

```
aws emr-serverless create-application \
    --release-label emr-7.13.0 \
    --runtime-configuration '{
     "classification": "spark-defaults", 
     "properties": {
      "spark.emr-serverless.lakeformation.enabled": "true"
      }
    }' \
    --type "SPARK"
```

EMR Studio で新しいアプリケーションを作成するときに Lake Formation を有効にすることもできます。**[追加の設定]** で利用可能な **[Lake Formation のきめ細かなアクセスコントロールを使用する]** を選択します。

EMR Serverless で Lake Formation を使用することにより、[ワーカー間の暗号化](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/interworker-encryption.html)がデフォルトで有効になるため、ワーカー間の暗号化を再度明示的に有効にする必要はありません。

**Spark ジョブの Lake Formation の有効化**

個々の Spark ジョブの Lake Formation を有効にするには、`spark-submit` の使用時に `spark.emr-serverless.lakeformation.enabled` を true に設定します。

```
--conf spark.emr-serverless.lakeformation.enabled=true
```

## ジョブランタイムロールの IAM アクセス許可
<a name="emr-serverless-lf-enable-permissions"></a>

Lake Formation のアクセス許可は、Glue Data Catalog AWS リソース、Amazon S3 ロケーション、およびそれらのロケーションの基盤となるデータへのアクセスを制御します。IAM アクセス許可は、Lake Formation および AWS Glue API とリソースへのアクセスを制御します。データカタログ内のテーブルにアクセスするための Lake Formation アクセス許可 (SELECT) を持っていても、`glue:Get*` API オペレーションに対する IAM アクセス許可がない場合、操作は失敗します。

以下は、S3 のスクリプトにアクセスするための IAM アクセス許可、S3 AWS へのログのアップロード、Glue API アクセス許可、Lake Formation へのアクセス許可を指定する方法のポリシー例です。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "ScriptAccess",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::*.amzn-s3-demo-bucket/scripts",
        "arn:aws:s3:::*.amzn-s3-demo-bucket/*"
      ]
    },
    {
      "Sid": "LoggingAccess",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/logs/*"
      ]
    },
    {
      "Sid": "GlueCatalogAccess",
      "Effect": "Allow",
      "Action": [
        "glue:Get*",
        "glue:Create*",
        "glue:Update*"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Sid": "LakeFormationAccess",
      "Effect": "Allow",
      "Action": [
        "lakeformation:GetDataAccess"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
```

------

## ジョブランタイムロールの Lake Formation アクセス許可の設定
<a name="emr-serverless-lf-enable-set-up-grants-for-role"></a>

まず、Hive テーブルの場所を Lake Formation に登録します。次に、目的のテーブルにジョブランタイムロールのアクセス許可を作成します。Lake Formation の詳細については、[「What is?」を参照してください AWS Lake Formation。](https://docs.aws.amazon.com/lake-formation/latest/dg/what-is-lake-formation.html) 「 *AWS Lake Formation デベロッパーガイド*」の「�

Lake Formation アクセス許可を設定したら、Amazon EMR Serverless で Spark ジョブを送信します。Spark ジョブの詳細については、「[Spark example](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/jobs-spark.html#spark-examples)」を参照してください。

## ジョブ実行の送信
<a name="emr-serverless-lf-enable-submit-job"></a>

Lake Formation 許可の設定が完了したら、[EMR Serverless で Spark ジョブを送信](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/jobs-spark.html#spark-examples)できます。次のセクションでは、ジョブ実行プロパティを設定して送信する方法の例を示します。

## アクセス許可の要件
<a name="emr-serverless-lf-enable-otf-permissions"></a>

### に登録されていないテーブル AWS Lake Formation
<a name="emr-s-lf-otf-permissions"></a>

に登録されていないテーブルの場合 AWS Lake Formation、ジョブランタイムロールは AWS Glue データカタログと Amazon S3 の基盤となるテーブルデータの両方にアクセスします。これには、ジョブランタイムロールに Glue オペレーションと Amazon AWS S3 オペレーションの両方に対する適切な IAM アクセス許可が必要です。 Amazon S3 

### に登録されたテーブル AWS Lake Formation
<a name="emr-s-lf-otf-permissions-tables-lf-registered"></a>

に登録されたテーブルの場合 AWS Lake Formation、ジョブランタイムロールは AWS Glue データカタログメタデータにアクセスし、Lake Formation によって提供された一時的な認証情報は Amazon S3 の基盤となるテーブルデータにアクセスします。オペレーションの実行に必要な Lake Formation のアクセス許可は、Spark ジョブが開始する AWS Glue データカタログと Amazon S3 API コールに依存し、次のように要約できます。
+ **DESCRIBE** アクセス許可により、ランタイムロールは Data Catalog 内のテーブルまたはデータベースメタデータを読み取ることができます。
+ **ALTER** アクセス許可により、ランタイムロールは Data Catalog のテーブルまたはデータベースメタデータを変更できます。
+ **DROP** アクセス許可により、ランタイムロールは Data Catalog からテーブルまたはデータベースメタデータを削除できます。
+ **SELECT** アクセス許可により、ランタイムロールは Amazon S3 からテーブルデータを読み取ることができます。
+ **INSERT** アクセス許可により、ランタイムロールは Amazon S3 にテーブルデータを書き込むことができます。
+ **DELETE** アクセス許可により、ランタイムロールは Amazon S3 からテーブルデータを削除できます。
**注記**  
Lake Formation は、Spark ジョブが AWS Glue を呼び出してテーブルメタデータを取得し、Amazon S3 を呼び出してテーブルデータを取得するときに、アクセス許可を遅延的に評価します。アクセス許可が不十分なランタイムロールを使用するジョブは、Spark が欠落しているアクセス許可を必要とする AWS Glue または Amazon S3 呼び出しを行うまで失敗しません。

**注記**  
次のサポートされているテーブルマトリックス:   
**サポート**対象とマークされたオペレーションは、Lake Formation 認証情報のみを使用して、Lake Formation に登録されたテーブルのテーブルデータにアクセスします。Lake Formation のアクセス許可が不十分な場合、オペレーションはランタイムロールの認証情報にフォールバックしません。Lake Formation に登録されていないテーブルの場合、ジョブランタイムロールの認証情報はテーブルデータにアクセスします。
**Amazon S3 ロケーションでの IAM アクセス許可でサポートとマークされたオペレーション**は、Amazon S3 の基盤となるテーブルデータにアクセスするために Lake Formation 認証情報を使用しません。これらのオペレーションを実行するには、テーブルが Lake Formation に登録されているかどうかにかかわらず、ジョブランタイムロールにテーブルデータにアクセスするために必要な Amazon S3 IAM アクセス許可が必要です。

------
#### [ Hive ]


| 運用 | AWS Lake Formation アクセス許可 | サポートステータス | 
| --- | --- | --- | 
| SELECT | SELECT | サポート | 
| CREATE TABLE | CREATE\_TABLE | サポート | 
| CREATE TABLE LIKE | CREATE\_TABLE | Amazon S3 ロケーションでの IAM アクセス許可でサポート | 
| CREATE TABLE AS SELECT | CREATE\_TABLE | Amazon S3 ロケーションでの IAM アクセス許可でサポート | 
| DESCRIBE TABLE | DESCRIBE | サポート | 
| SHOW TBLPROPERTIES | DESCRIBE | サポート | 
| SHOW COLUMNS | DESCRIBE | サポート | 
| SHOW PARTITIONS | DESCRIBE | サポート | 
| SHOW CREATE TABLE | DESCRIBE | サポート | 
| テーブルの変更 tablename | SELECT と ALTER | サポート | 
| テーブルtablenameセットの場所を変更する | - | サポートされていません | 
| テーブルtablenameの追加パーティションを変更する | SELECT、INSERT、ALTER | サポート | 
| REPAIR TABLE | SELECT と ALTER | サポート | 
| データのロード |  | サポートされていません | 
| INSERT | INSERT と ALTER | サポート | 
| INSERT OVERWRITE | SELECT、INSERT、DELETE、ALTER | サポート | 
| DROP TABLE | SELECT、DROP、DELETE、ALTER | サポート | 
| TRUNCATE TABLE | SELECT、INSERT、DELETE、ALTER | サポート | 
| データフレームライター V1 | 対応する SQL オペレーションと同じ | 既存のテーブルにデータを追加するときにサポートされます。詳細については、[「考慮事項と制限](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/emr-serverless-lf-enable-considerations.html)事項」を参照してください。 | 
| データフレームライター V2 | 対応する SQL オペレーションと同じ | 既存のテーブルにデータを追加するときにサポートされます。詳細については、[「考慮事項と制限](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/emr-serverless-lf-enable-considerations.html)事項」を参照してください。 | 

------
#### [ Iceberg ]


| 運用 | AWS Lake Formation アクセス許可 | サポートステータス | 
| --- | --- | --- | 
| SELECT | SELECT | サポート | 
| CREATE TABLE | CREATE\_TABLE | サポート | 
| CREATE TABLE LIKE | CREATE\_TABLE | Amazon S3 ロケーションでの IAM アクセス許可でサポート | 
| CREATE TABLE AS SELECT | CREATE\_TABLE | Amazon S3 ロケーションでの IAM アクセス許可でサポート | 
| 選択としてテーブルを置き換える | SELECT、INSERT、ALTER | サポート | 
| DESCRIBE TABLE | DESCRIBE | Amazon S3 ロケーションでの IAM アクセス許可でサポート | 
| SHOW TBLPROPERTIES | DESCRIBE | Amazon S3 ロケーションでの IAM アクセス許可でサポート | 
| SHOW CREATE TABLE | DESCRIBE | Amazon S3 ロケーションでの IAM アクセス許可でサポート | 
| ALTER TABLE | SELECT、INSERT、ALTER | サポート  | 
| ALTER TABLE SET LOCATION | SELECT、INSERT、ALTER | Amazon S3 ロケーションでの IAM アクセス許可でサポート | 
| によって順序付けられたテーブルの書き込みを変更する | SELECT、INSERT、ALTER | Amazon S3 ロケーションでの IAM アクセス許可でサポート | 
| によって分散されたテーブルの書き込みを変更する | SELECT、INSERT、ALTER | Amazon S3 ロケーションでの IAM アクセス許可でサポート | 
| テーブル名の変更テーブル | CREATE\_TABLE、および DROP | サポート | 
| INSERT INTO | SELECT、INSERT、ALTER | サポート | 
| INSERT OVERWRITE | SELECT、INSERT、ALTER | サポート | 
| DELETE | SELECT、INSERT、ALTER | サポート | 
| UPDATE | SELECT、INSERT、ALTER | サポート | 
| MERGE INTO | SELECT、INSERT、ALTER | サポート | 
| DROP TABLE | SELECT、DELETE、DROP | サポート | 
| DataFrame ライター V1 | - | サポートされていません | 
| DataFrame ライター V2 | 対応する SQL オペレーションと同じ | 既存のテーブルにデータを追加するときにサポートされます。詳細については、「[考慮事項と制限事項](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/emr-serverless-lf-enable-considerations.html)」を参照してください。 | 
| メタデータテーブル | SELECT | サポート対象。特定のテーブルは非表示になります。詳細については、「[考慮事項と制限事項](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/emr-serverless-lf-enable-considerations.html)」を参照してください。 | 
| ストアドプロシージャ | - | 次の条件を満たすテーブルでサポートされています。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/emr/latest/EMR-Serverless-UserGuide/emr-serverless-lf-enable.html) | 

**Iceberg の Spark 設定:** 以下の例は、Iceberg で Spark を設定する方法を示しています。Iceberg ジョブを実行するには、次の `spark-submit` プロパティを指定します。

```
--conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkSessionCatalog
--conf spark.sql.catalog.spark_catalog.warehouse=<{{S3_DATA_LOCATION}}>
--conf spark.sql.catalog.spark_catalog.glue.account-id=<{{ACCOUNT_ID}}>
--conf spark.sql.catalog.spark_catalog.client.region=<{{REGION}}>
--conf spark.sql.catalog.spark_catalog.glue.endpoint=https://glue.<{{REGION}}>.amazonaws.com
```

------
#### [ Hudi ]


| 運用 | AWS Lake Formation アクセス許可 | サポートステータス | 
| --- | --- | --- | 
| SELECT | SELECT | サポート | 
| CREATE TABLE | CREATE\_TABLE | Amazon S3 ロケーションでの IAM アクセス許可でサポート | 
| CREATE TABLE LIKE | CREATE\_TABLE | Amazon S3 ロケーションでの IAM アクセス許可でサポート | 
| CREATE TABLE AS SELECT | - | サポートされていません | 
| DESCRIBE TABLE | DESCRIBE | Amazon S3 ロケーションでの IAM アクセス許可でサポート | 
| SHOW TBLPROPERTIES | DESCRIBE | Amazon S3 ロケーションでの IAM アクセス許可でサポート | 
| SHOW COLUMNS | DESCRIBE | Amazon S3 ロケーションでの IAM アクセス許可でサポート | 
| SHOW CREATE TABLE | DESCRIBE | Amazon S3 ロケーションでの IAM アクセス許可でサポート | 
| ALTER TABLE | SELECT | Amazon S3 ロケーションでの IAM アクセス許可でサポート | 
| INSERT INTO | SELECT と ALTER | Amazon S3 ロケーションでの IAM アクセス許可でサポート | 
| INSERT OVERWRITE | SELECT と ALTER | Amazon S3 ロケーションでの IAM アクセス許可でサポート | 
| DELETE | - | サポートされていません | 
| UPDATE | - | サポートされていません | 
| MERGE INTO | - | サポートされていません | 
| DROP TABLE | SELECT と DROP | Amazon S3 ロケーションでの IAM アクセス許可でサポート | 
| DataFrame ライター V1 | - | サポートされていません | 
| DataFrame ライター V2 | 対応する SQL オペレーションと同じ | Amazon S3 ロケーションでの IAM アクセス許可でサポート | 
| メタデータテーブル | - | サポートされていません | 
| テーブルのメンテナンスとユーティリティの機能 | - | サポートされていません | 

以下の例では、Hudi を使用して Spark を設定し、ファイルの場所と使用に必要なその他のプロパティを指定します。

**Hudi の Spark 設定:** このスニペットをノートブックで使用することにより、Hudi Spark バンドル JAR ファイルへのパスが指定され、Spark の Hudi 機能が有効になります。また、 Glue データカタログをメタストアとして使用するように AWS Spark を設定します。

```
%%configure -f
{
    "conf": {
        "spark.jars": "/usr/lib/hudi/hudi-spark-bundle.jar",
        "spark.hadoop.hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory",
        "spark.serializer": "org.apache.spark.serializer.JavaSerializer",
        "spark.sql.catalog.spark_catalog": "org.apache.spark.sql.hudi.catalog.HoodieCatalog",
        "spark.sql.extensions": "org.apache.spark.sql.hudi.HoodieSparkSessionExtension"
    }
}
```

** AWS Glue を使用した Hudi の Spark 設定:** このスニペットをノートブックで使用すると、Hudi はサポートされているデータレイク形式として有効になり、Hudi ライブラリと依存関係が利用可能になります。

```
%%configure
{
    "--conf": "spark.serializer=org.apache.spark.serializer.JavaSerializer --conf 
spark.sql.catalog.spark_catalog=org.apache.spark.sql.hudi.catalog.HoodieCatalog --conf 
spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtension",
    "--datalake-formats": "hudi",
    "--enable-glue-datacatalog": True,
    "--enable-lakeformation-fine-grained-access": "true"
}
```

------
#### [ Delta Lake ]


| 運用 | AWS Lake Formation アクセス許可 | サポートステータス | 
| --- | --- | --- | 
| SELECT | SELECT | サポート | 
| CREATE TABLE | CREATE\_TABLE | サポート | 
| CREATE TABLE LIKE | - | サポートされていません | 
| CREATE TABLE AS SELECT | CREATE\_TABLE | サポート  | 
| 選択としてテーブルを置き換える | SELECT、INSERT、ALTER | サポート | 
| DESCRIBE TABLE | DESCRIBE | Amazon S3 ロケーションでの IAM アクセス許可でサポート | 
| SHOW TBLPROPERTIES | DESCRIBE | Amazon S3 ロケーションでの IAM アクセス許可でサポート | 
| SHOW COLUMNS | DESCRIBE | Amazon S3 ロケーションでの IAM アクセス許可でサポート | 
| SHOW CREATE TABLE | DESCRIBE | Amazon S3 ロケーションでの IAM アクセス許可でサポート | 
| ALTER TABLE | SELECT と INSERT  | サポート  | 
| ALTER TABLE SET LOCATION | SELECT と INSERT  | Amazon S3 ロケーションでの IAM アクセス許可でサポート | 
| によるテーブルtablenameクラスターの変更 | SELECT と INSERT | Amazon S3 ロケーションでの IAM アクセス許可でサポート | 
| テーブルtablenameの追加制約を変更する | SELECT と INSERT | Amazon S3 ロケーションでの IAM アクセス許可でサポート | 
| テーブルtablenameドロップ制約の変更 | SELECT と INSERT | Amazon S3 ロケーションでの IAM アクセス許可でサポート | 
| INSERT INTO | SELECT と INSERT | サポート | 
| INSERT OVERWRITE | SELECT と INSERT | サポート | 
| DELETE | SELECT と INSERT | サポート | 
| UPDATE | SELECT と INSERT | サポート | 
| MERGE INTO | SELECT と INSERT | サポート | 
| DROP TABLE | SELECT、DELETE、DROP | サポート | 
| DataFrame ライター V1 | - | サポートされていません | 
| DataFrame ライター V2 | 対応する SQL オペレーションと同じ | サポート  | 
| テーブルのメンテナンスとユーティリティの機能 | - | サポートされていません | 

**Delta Lake での EMR Serverless:** EMR Serverless で 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 \
```

------