

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

# Glue データカタログでの Presto AWS の使用
<a name="emr-presto-glue"></a>

Amazon EMR リリースバージョン 5.10.0 以降では、Presto のデフォルトの Hive メタストアとして AWS Glue データカタログを指定できます。永続的なメタストア、またはさまざまなクラスター、サービス、アプリケーション、あるいは AWS アカウントで共有されるメタストアが必要である場合は、この設定をお勧めします。

AWS Glue はフルマネージド型の抽出、変換、ロード (ETL) サービスです。シンプルで費用対効果の高い方法で、データを分類し、クリーンアップし、強化し、さまざまなデータストア間で確実に移動できます。 AWS Glue Data Catalog は、Amazon EMR、Amazon RDS、Amazon Redshift、Redshift Spectrum、Athena、および Apache Hive メタストアと互換性のあるすべてのアプリケーションと統合して、さまざまなデータソースとデータ形式にわたって統合されたメタデータリポジトリを提供します。 AWS Glue クローラは、Amazon S3 のソースデータからスキーマを自動的に推測し、関連するメタデータをデータカタログに保存できます。データカタログの詳細については、「 [Glue デベロッパーガイド AWS 」の「 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 データカタログをメタストアとして指定する
<a name="emr-presto-glue-configure"></a>

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

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

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

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

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

1. **[アプリケーションバンドル]** で **[Presto]** を選択します。

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

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

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

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

**を使用して AWS Glue データカタログをデフォルトの Hive メタストアとして指定するには AWS CLI**

クラスターの作成時に以下の設定分類を指定する方法の例については、「[アプリケーションの設定](emr-configure-apps.md)」を参照してください。

**Amazon EMR 5.16.0 以降**
+ 以下の JSON の例に示すように、`hive.metastore` プロパティを `glue` に設定します。

  ```
  [
    {
      "Classification": "presto-connector-hive",
      "Properties": {
        "hive.metastore": "glue"
      }
    }
  ]
  ```

  別の でデータカタログを指定するには AWS アカウント、次の JSON の例に示すように `hive.metastore.glue.catalogid`プロパティを追加します。`acct-id` は、データカタログの AWS アカウントに置き換えます。Amazon EMR バージョン 5.15.0 以前では、別の AWS アカウント のデータカタログは使用できません。

  ```
  [
    {
      "Classification": "presto-connector-hive",
      "Properties": {
        "hive.metastore": "glue",
        "hive.metastore.glue.catalogid": "acct-id"
      }
    }
  ]
  ```

  **Amazon EMR 5.10.0 ～ 5.15.0**

  以下の JSON の例に示すように、`hive.metastore.glue.datacatalog.enabled` プロパティを `true` に設定します。

  ```
  [
    {
      "Classification": "presto-connector-hive",
      "Properties": {
        "hive.metastore.glue.datacatalog.enabled": "true"
      }
    }
  ]
  ```

  **Amazon EMR 6.1.0 以降で PrestoSQL (Trino) を使用**

  EMR バージョン 6.1.0 以降、PrestoSQL は Glue もデフォルトの Hive メタストアとしてサポートしています。以下の JSON の例に示されているように、`prestosql-connector-hive` 設定分類を使用し、`hive.metastore` プロパティを `glue` に設定します。

  Amazon EMR バージョン 6.4.0 以降では、PrestoSQL ではなく、新しい名称の Trino を使用します。Trino を使用する場合、以下の設定分類で `prestosql-connector-hive` を `trino-connector-hive` に置き換えてください。

  ```
  [
    {
      "Classification": "prestosql-connector-hive",
      "Properties": {
        "hive.metastore": "glue"
      }
    }
  ]
  ```

長時間稼働クラスターでメタストアを切り替えるには、マスターノードに接続して `/etc/presto/conf/catalog/hive.properties` ファイルのプロパティ値を直接編集し、Presto サーバー (`sudo restart presto-server`) を再起動することにより、リリースバージョンに最適な値を手動で設定できます。この方法を Amazon EMR 5.15.0 以前のバージョンで使用する場合は、`hive.table-statistics-enabled` が `false` に設定されていることを確認します。リリースバージョン 5.16.0 以降を使用する場合、この設定は必要ありません。ただし、テーブルとパーティションの統計はサポートされません。

------

## 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)」を参照してください。

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

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

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

 AWS Glue データカタログの暗号化の詳細については、*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 クラスターからアクセスできます。異なるアカウントから、複数のプリンシパルを指定できます。

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

Presto でメタストアとして AWS Glue データカタログを使用する場合は、次の項目を考慮してください。
+ 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)」を参照してください。