

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

# Amazon EMR AWS で Spark で Glue データカタログカタログを使用する
<a name="emr-spark-glue"></a>

Amazon EMR リリース 5.8.0 以降を使用すると、Apache Hive メタストアとして AWS Glue データカタログを使用するように Spark を設定できます。永続的な Hive メタストア、または異なるクラスター、サービス、アプリケーション、または AWS アカウントによって共有される Hive メタストアが必要な場合は、この設定をお勧めします。

Amazon EMR リリース 6.5.0 以降を使用して、Apache Iceberg で AWS Glue データカタログを使用するように Spark を設定できます。

Amazon EMR リリース 7.5.0 以降を使用すると、 Glue データカタログを Iceberg REST カタログとして使用するように AWS Spark を設定できます。

AWS Glue はフルマネージド型の抽出、変換、ロード (ETL) サービスで、データの分類、クリーンアップ、強化、さまざまなデータストア間の信頼性の高い移動をシンプルかつ費用対効果の高い方法で実現します。 AWS Glue Data Catalog は、Amazon EMR、Amazon RDS、Amazon Redshift、Redshift Spectrum、Athena、および Apache Hive メタストアと互換性のある任意のアプリケーションと統合して、さまざまなデータソースとデータ形式にわたって統合されたメタデータリポジトリを提供します。 AWS Glue クローラは、Amazon S3 のソースデータからスキーマを自動的に推測し、関連するメタデータをデータカタログに保存できます。データカタログの詳細については、[AWS 「 Glue デベロッパーガイド」の「 Glue データカタログ](https://docs.aws.amazon.com/glue/latest/dg/populate-data-catalog.html)の入力」を参照してください。 *AWS *

Glue AWS には個別の料金が適用されます。データカタログにメタデータを保存してアクセスするための月額料金、Glue ETL AWS ジョブとクローラランタイムに対して 1 分あたりに課金される時間料金、プロビジョニングされた開発エンドポイントごとに 1 分あたりに課金される時間料金があります。Data Catalog では、最大 100 万個までのオブジェクトを無料で保存できます。100 万を超えるオブジェクトを保存した場合は、100,000 オブジェクトごとに 1 USD が課金されます。Data Catalog 内のオブジェクトは、テーブル、パーティション、またはデータベースです。詳細については、「[Glue 料金表](https://aws.amazon.com/glue/pricing)」を参照してください。

**重要**  
2017 年 8 月 14 日より前に Amazon Athena または Amazon Redshift Spectrum を使用してテーブルを作成した場合、データベースとテーブルは AWS Glue データカタログとは別の Athena 管理カタログに保存されます。Amazon EMR をこれらのテーブルと統合するには、 AWS Glue データカタログにアップグレードする必要があります。詳細については、[「Amazon Athena ユーザーガイド」の「 AWS Glue データカタログへのアップグレード](https://docs.aws.amazon.com/athena/latest/ug/glue-upgrade.html)」を参照してください。 *Amazon Athena *

## AWS Glue データカタログを Apache Hive メタストアとして指定する
<a name="emr-spark-glue-configure"></a>

、、または Amazon EMR API を使用して AWS マネジメントコンソール AWS CLI、 AWS Glue データカタログをメタストアとして指定できます。CLI または API を使用する場合は、Spark の設定分類を使用してデータカタログを指定します。さらに、Amazon EMR 5.16.0 以降では、設定分類を使用して別の でデータカタログを指定できます AWS アカウント。コンソールを使用する場合は、**[Advanced Options]** (詳細オプション) または **[Quick Options]** (クイックオプション) を使用して、Data Catalog を指定できます。

**注記**  
Zeppelin は Spark AWS コンポーネントと共にインストールされるため、 Glue Data Catalog を使用するオプションは Zeppelin でも使用できます。

------
#### [ Console ]

**新しいコンソールで AWS Glue データカタログを Apache Hive メタストアとして指定するには**

1. にサインインし AWS マネジメントコンソール、[https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr) で Amazon EMR コンソールを開きます。

1. 左側のナビゲーションペインの **[Amazon EMR on EC2]** で、**[クラスター]** を選択し、**[クラスターの作成]** を選択します

1. **[アプリケーションバンドル]** で **[Spark]** または **[カスタム]** を選択します。クラスターをカスタマイズする場合は、必ず Zeppelin または Spark をアプリケーションの 1 つとして選択します。

1. **[AWS Glue Data Catalog 設定]** で **[Spark テーブルメタデータに使用]** チェックボックスをオンにします。

1. クラスターに適用するその他のオプションを選択します。

1. クラスターを起動するには、**[クラスターの作成]** を選択します。

------
#### [ AWS CLI ]

**で AWS Glue データカタログを Apache Hive メタストアとして指定するには AWS CLI**

 AWS CLI と Amazon EMR API を使用して設定分類を指定する方法の詳細については、「」を参照してください[アプリケーションの設定](emr-configure-apps.md)。
+ 次の例に示すように、`spark-hive-site` 分類を使用して `hive.metastore.client.factory.class` の値を指定します。

  ```
  [
    {
      "Classification": "spark-hive-site",
      "Properties": {
        "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory"
      }
    }
  ]
  ```

  別の AWS アカウントでデータカタログを指定するには、次の例に示すように `hive.metastore.glue.catalogid`プロパティを追加します。`acct-id` は、データカタログの AWS アカウントに置き換えます。

  ```
  [
    {
      "Classification": "spark-hive-site",
      "Properties": {
        "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory",
        "hive.metastore.glue.catalogid": "acct-id"
      }
    }
  ]
  ```

------

## AWS Glue データカタログを Apache Iceberg カタログとして指定する
<a name="emr-spark-glue-configure-iceberg"></a>

 AWS Glue データカタログは、、、Amazon EMR API、または Spark セッションランタイム設定を使用して、Apache Iceberg カタログ実装 AWS マネジメントコンソール AWS CLI、または Apache Iceberg REST カタログエンドポイントとして指定できます。CLI または API を使用する場合は、Spark の設定分類を使用してデータカタログを指定します。詳細については、[「Apache Iceberg カタログとしての AWS Glue データカタログの指定](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-glue.html#emr-spark-glue-configure-iceberg)」を参照してください。

## IAM アクセス許可
<a name="emr-hive-glue-permissions"></a>

クラスターの EC2 インスタンスプロファイルには、 Glue アクションの AWS IAM アクセス許可が必要です。さらに、 Glue Data Catalog オブジェクト AWS の暗号化を有効にする場合、ロールには暗号化 AWS KMS key に使用される の暗号化、復号、生成も許可する必要があります。

### Glue AWS アクションのアクセス許可
<a name="emr-hive-glue-permissions-actions"></a>

Amazon EMR の デフォルトの EC2 インスタンスプロファイルを使用する場合、アクションは必要ありません。にアタッチされている `AmazonElasticMapReduceforEC2Role`マネージドポリシーは、必要なすべての Glue AWS アクション`EMR_EC2_DefaultRole`を許可します。ただし、カスタム EC2 インスタンスプロファイルとアクセス許可を指定する場合は、適切な AWS Glue アクションを設定する必要があります。開始点として `AmazonElasticMapReduceforEC2Role` 管理ポリシーを使用します。詳細については、「*Amazon EMR 管理ガイド*」の「[クラスター EC2 インスタンスのサービスロール (EC2 インスタンスプロファイル)](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-role-for-ec2.html)」を参照してください。

### Glue Data Catalog AWS を暗号化および復号するためのアクセス許可
<a name="emr-hive-glue-permissions-encrypt"></a>

インスタンスプロファイルには、キーを使用してデータを暗号化および復号するためのアクセス許可が必要です。以下のステートメントが両方とも適用される場合、これらのアクセス許可を設定する必要は*ありません*。
+ Glue AWS のマネージドキーを使用して、 AWS Glue Data Catalog オブジェクトの暗号化を有効にします。
+  AWS Glue データカタログ AWS アカウント と同じ にあるクラスターを使用します。

それ以外の場合は、EC2 インスタンスプロファイルにアタッチされたアクセス許可ポリシーに次のステートメントを追加する必要があります。

Glue データカタログ AWS の暗号化の詳細については、*AWS 「 Glue デベロッパーガイド*[」の「データカタログの暗号化](https://docs.aws.amazon.com/glue/latest/dg/encrypt-glue-data-catalog.html)」を参照してください。

### リソースベースのアイデンティティアクセス許可
<a name="emr-hive-glue-permissions-resource"></a>

Amazon EMR で AWS Glue を Hive、Spark、または Presto と組み合わせて使用する場合、 AWS Glue は Data Catalog リソースへのアクセスを制御するためのリソースベースのポリシーをサポートします。これらのリソースには、データベース、テーブル、接続、ユーザー定義関数が含まれます。詳細については、「*AWS Glue デベロッパーガイド*」の「[AWS Glue リソースポリシー](https://docs.aws.amazon.com/glue/latest/dg/glue-resource-policies.html)」を参照してください。

リソースベースのポリシーを使用して Amazon EMR 内から AWS Glue へのアクセスを制限する場合、アクセス許可ポリシーで指定するプリンシパルは、クラスターの作成時に指定する EC2 インスタンスプロファイルに関連付けられたロール ARN である必要があります。例えば、カタログにアタッチされたリソースベースのポリシーの場合、以下の例に示されている形式を使用して、クラスター EC2 インスタンスのデフォルトサービスロールのロール ARN である *EMR\$1EC2\$1DefaultRole* を `Principal` として指定できます。

```
arn:aws:iam::acct-id:role/EMR_EC2_DefaultRole
```

*acct-id* は Glue アカウント ID AWS とは異なる場合があります。これにより、さまざまなアカウントで EMR クラスターからアクセスできます。異なるアカウントから、複数のプリンシパルを指定できます。

## Glue データカタログを使用する際 AWS の考慮事項
<a name="emr-hive-glue-considerations-hive"></a>

Spark AWS で Glue データカタログを Apache Hive メタストアとして使用する場合は、次の項目を考慮してください。
+ 場所の URI が指定されていないデフォルトデータベースを使用すると、テーブルの作成時に障害が発生します。回避策として、`LOCATION` の使用時に `s3://amzn-s3-demo-bucket1` 句を使用して `CREATE TABLE` などのバケットの場所を指定します。または、デフォルトデータベース以外のデータベース内にテーブルを作成します。
+ Glue AWS 内からのテーブルの名前変更はサポートされていません。
+ `LOCATION` を指定せずに Hive テーブルを作成すると、テーブルデータは、`hive.metastore.warehouse.dir` プロパティによって指定された場所に保管されます。デフォルトでは、これは HDFS 内の場所です。別のクラスターがテーブルにアクセスする必要がある場合、テーブルを作成したクラスターに対する適切なアクセス許可がない限り、処理に失敗します。さらに、HDFS ストレージは一時的であるため、クラスターが終了すると、テーブルデータは失われ、テーブルを再作成する必要があります。Glue を使用して Hive テーブルを作成するときは、Amazon S3 AWS `LOCATION`で を指定することをお勧めします。または、`hive-site` 設定分類を使用して、`hive.metastore.warehouse.dir` の Amazon S3 で場所を指定できます。これは、すべての Hive テーブルに適用されます。テーブルが HDFS ロケーションで作成され、テーブルを作成したクラスターがまだ実行されている場合は、 Glue 内からテーブルロケーションを Amazon S3 AWS に更新できます。詳細については、「 [AWS Glue デベロッパーガイド」の「 Glue コンソールでのテーブルの操作](https://docs.aws.amazon.com/glue/latest/dg/console-tables.html)」を参照してください。 *AWS *
+ 引用符とアポストロフィを含むパーティション値はサポートされていません(例: `PARTITION (owner="Doe's").`)。
+ [列統計](https://cwiki.apache.org/confluence/display/Hive/StatsDev#StatsDev-ColumnStatistics)は、emr-5.31.0 以降でサポートされています。
+ [Hive 認可](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Authorization)の使用はサポートされていません。代替策として、[AWS Glue リソースベースのポリシー](https://docs.aws.amazon.com/glue/latest/dg/glue-resource-policies.html)を使用することを検討してください。詳細については、「Use [Resource-Based Policies for Amazon EMR Access to AWS Glue Data Catalog](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-roles-glue.html)」を参照してください。

Spark AWS で Apache Iceberg REST Catalog として Glue データカタログを使用する場合は、次の点を考慮してください。
+ 「[Iceberg SparkCatalog と SparkSessionCatalog を使用する場合の設定の違い](emr-iceberg-use-spark-cluster.md#emr-iceberg-spark-catalog)」で説明されている Iceberg で Spark セッションカタログを使用する場合は、 AWS Glue Data Catalog を Apache Iceberg REST カタログとして設定するだけでなく、 AWS Glue Data Catalog を Apache Hive メタストアとして設定する必要があります。
+  AWS Glue データカタログ IRC エンドポイントは、Amazon SigV4 認証スキームのみをサポートします。OAuth はサポートされていません。OAuth ユーザーの場合は、IAM Identity Center を使用してアクセスを設定してください。「[Connecting Lake Formation with IAM Identity Center](https://docs.aws.amazon.com/lake-formation/latest/dg/connect-lf-identity-center.html)」を参照してください。
+  AWS Glue Iceberg REST カタログは、オープンソースのすべてのオペレーションをサポートしているわけではありません。