AWS Glue データカタログでの Presto の使用 - Amazon EMR

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

AWS Glue データカタログでの Presto の使用

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

AWS Glue はフルマネージド型の抽出、変換、ロード (ETL) サービスで、データの分類、クリーニング、強化、さまざまなデータストア間の信頼性の高い移動を簡単かつ費用対効果の高い方法で実現します。 AWS Glue Data Catalog は、Amazon EMRだけでなく、Amazon 、Amazon RDSRedshift、Redshift Spectrum、Athena、および Apache Hive メタストアと互換性のあるすべてのアプリケーションと統合されたメタデータリポジトリを提供します。 AWS Glue クローラは、Amazon S3 のソースデータからスキーマを自動的に推測し、関連するメタデータをデータカタログに保存できます。データカタログの詳細については、「 AWS Glue デベロッパーガイド」の「 Glue データカタログの入力」を参照してください。 AWS

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

重要

2017 年 8 月 14 日より前に Amazon Athena または Amazon Redshift Spectrum を使用してテーブルを作成した場合、データベースとテーブルは AWS Glue データカタログとは別の Athena 管理カタログに保存されます。Amazon EMRをこれらのテーブルと統合するには、 AWS Glue データカタログにアップグレードする必要があります。詳細については、「Amazon Athena ユーザーガイド」の「 AWS Glue データカタログへのアップグレード」を参照してください。 Amazon Athena

AWS Glue Data Catalog をメタストアとして指定する

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

Console
新しいコンソールで AWS Glue Data Catalog を Hive メタストアとして指定するには
  1. にサインインし AWS Management Console、https://console.aws.amazon.com/emr で Amazon EMRコンソールを開きます。

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

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

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

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

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

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

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

Amazon EMR 5.16.0 以降

  • 次のJSON例glueに示すように、 hive.metastoreプロパティを に設定します。

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

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

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

    Amazon EMR 5.10.0 から 5.15.0

    次のJSON例に示すようにtruehive.metastore.glue.datacatalog.enabledプロパティを に設定します。

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

    PrestoSQL (Trino) を使用した Amazon EMR6.1.0 以降

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

    Amazon EMRバージョン 6.4.0 以降では、Presto の代わりに新しい名前 Trino が使用されますSQL。Trino を使用する場合、以下の設定分類で prestosql-connector-hivetrino-connector-hive に置き換えてください。

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

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

IAM アクセス許可

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

AWS Glue アクションのアクセス許可

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

AWS Glue Data Catalog を暗号化および復号するためのアクセス許可

インスタンスプロファイルには、キーを使用してデータを暗号化および復号するためのアクセス許可が必要です。以下のステートメントが両方とも適用される場合、これらのアクセス許可を設定する必要はありません

  • AWS Glue の マネージドキーを使用して、 AWS Glue Data Catalog オブジェクトの暗号化を有効にします。

  • AWS Glue データカタログ AWS アカウント と同じ にあるクラスターを使用します。

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

[ { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:region:acct-id:key/12345678-1234-1234-1234-123456789012" } ] } ]

AWS Glue データカタログの暗号化の詳細については、「 AWS Glue デベロッパーガイド」の「データカタログの暗号化」を参照してください。

リソースベースのアクセス許可

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

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

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

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

AWS Glue Data Catalog を使用する場合の考慮事項

Presto でメタストアとして AWS Glue Data Catalog を使用する場合は、次の項目を考慮してください。

  • AWS Glue 内からのテーブルの名前変更はサポートされていません。

  • LOCATION を指定せずに Hive テーブルを作成すると、テーブルデータは、hive.metastore.warehouse.dir プロパティによって指定された場所に保管されます。デフォルトでは、これは 内の場所ですHDFS。別のクラスターがテーブルにアクセスする必要がある場合、テーブルを作成したクラスターに対する適切なアクセス許可がない限り、処理に失敗します。さらに、HDFSストレージは一時的なため、クラスターが終了するとテーブルデータは失われ、テーブルを再作成する必要があります。 AWS Glue を使用して Hive Amazon S3 LOCATIONで を指定することをお勧めします。または、hive-site 設定分類を使用して、hive.metastore.warehouse.dir の Amazon S3 で場所を指定できます。これは、すべての Hive テーブルに適用されます。テーブルが HDFSロケーションで作成され、テーブルを作成したクラスターがまだ実行されている場合は、 AWS Glue 内からテーブルの場所を Amazon S3 に更新できます。詳細については、「 AWS Glue デベロッパーガイド」の「 Glue コンソールでのテーブルの操作」を参照してください。 AWS

  • 引用符とアポストロフィを含むパーティション値はサポートされていません(例: PARTITION (owner="Doe's").)。

  • 列統計は、emr-5.31.0 以降でサポートされています。

  • Hive 認可の使用はサポートされていません。代替策として、AWS Glue リソースベースのポリシーを使用することを検討してください。詳細については、「Amazon EMR Access to AWS Glue Data Catalog のリソースベースのポリシーを使用する」を参照してください。