翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS Glue データカタログを Hive のメタストアとして使用する
Amazon EMR リリース 5.8.0 AWS 以降を使用して、 Glue データカタログをメタストアとして使用するように Hive を設定できます。永続的なメタストア、またはさまざまなクラスター、サービス、アプリケーション、あるいは 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 データカタログの入力」を参照してください。 AWS
Glue AWS には個別の料金が適用されます。データカタログにメタデータを保存してアクセスするための月額料金、 Glue ETL AWS ジョブとクローラランタイムに対して 1 分あたりに課金される時間料金、プロビジョニングされた開発エンドポイントごとに 1 分あたりに課金される時間料金があります。Data Catalog では、最大 100 万個までのオブジェクトを無料で保存できます。100 万を超えるオブジェクトを保存した場合は、100,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 データカタログの指定
、、または Amazon EMR API を使用して AWS Management Console AWS CLI、 AWS Glue データカタログをメタストアとして指定できます。CLI または API を使用する場合は、Hive の設定分類を使用して Data Catalog を指定します。さらに、Amazon EMR 5.16.0 以降では、 設定分類を使用して、別の でデータカタログを指定できます AWS アカウント。コンソールを使用する場合は、[Advanced Options] (詳細オプション) または [Quick Options] (クイックオプション) を使用して、Data Catalog を指定できます。
IAM 許可
クラスターの EC2 インスタンスプロファイルには、 Glue アクションの IAM AWS アクセス許可が必要です。さらに、 AWS Glue Data Catalog オブジェクトの暗号化を有効にする場合は、暗号化 AWS KMS key に使用される の暗号化、復号、生成もロールに許可する必要があります。
Glue AWS アクションのアクセス許可
Amazon EMR の デフォルトの EC2 インスタンスプロファイルを使用する場合、アクションは必要ありません。にアタッチされている AmazonElasticMapReduceforEC2Role
管理ポリシーは、必要なすべての Glue AWS アクションEMR_EC2_DefaultRole
を許可します。ただし、カスタム EC2 インスタンスプロファイルとアクセス許可を指定する場合は、適切な AWS Glue アクションを設定する必要があります。開始点として AmazonElasticMapReduceforEC2Role
管理ポリシーを使用します。詳細については、「Amazon EMR 管理ガイド」の「クラスター EC2 インスタンスのサービスロール (EC2 インスタンスプロファイル)」を参照してください。
AWS Glue Data Catalog の暗号化と復号のためのアクセス許可
インスタンスプロファイルには、キーを使用してデータを暗号化および復号するためのアクセス許可が必要です。以下のステートメントが両方とも適用される場合、これらのアクセス許可を設定する必要はありません。
-
Glue の マネージドキーを使用して AWS 、 AWS Glue Data Catalog オブジェクトの暗号化を有効にします。
-
Glue データカタログ AWS アカウント と同じ 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
" } ] } ]
Glue データカタログの暗号化の詳細については、 AWS 「 AWS Glue デベロッパーガイド」の「データカタログの暗号化」を参照してください。
リソースベースのアクセス許可
Amazon EMR で AWS Glue を Hive、Spark、または Presto と組み合わせて使用する場合、 AWS Glue は Data Catalog リソースへのアクセスを制御するためのリソースベースのポリシーをサポートします。これらのリソースには、データベース、テーブル、接続、ユーザー定義関数が含まれます。詳細については、「AWS Glue デベロッパーガイド」の「AWS Glue リソースポリシー」を参照してください。
リソースベースのポリシーを使用して Amazon EMR 内から AWS Glue へのアクセスを制限する場合、アクセス許可ポリシーで指定するプリンシパルは、クラスターの作成時に指定する EC2 インスタンスプロファイルに関連付けられたロール ARN である必要があります。例えば、カタログにアタッチされたリソースベースのポリシーの場合、以下の例に示されている形式を使用して、クラスター EC2 インスタンスのデフォルトサービスロールのロール ARN である EMR_EC2_DefaultRole
を Principal
として指定できます。
arn:aws:iam::
acct-id
:role/EMR_EC2_DefaultRole
acct-id
は Glue アカウント ID AWS とは異なる場合があります。これにより、さまざまなアカウントで EMR クラスターからアクセスできます。異なるアカウントから、複数のプリンシパルを指定できます。
AWS Glue Data Catalog を使用する場合の考慮事項
Glue データカタログを Hive AWS のメタストアとして使用する場合は、次の項目を考慮してください。
-
Hive シェルを使用した補助 JAR の追加はサポートされません。この問題を回避するには、
hive-site
設定分類を使用してhive.aux.jars.path
プロパティを設定します。これにより、Hive のクラスパスに補助 JAR が追加されます。 -
Hive のトランザクション
はサポートされていません。 Glue AWS 内からのテーブルの名前変更はサポートされていません。
LOCATION
を指定せずに Hive テーブルを作成すると、テーブルデータは、hive.metastore.warehouse.dir
プロパティによって指定された場所に保管されます。デフォルトでは、これは HDFS 内の場所です。別のクラスターがテーブルにアクセスする必要がある場合、テーブルを作成したクラスターに対する適切なアクセス許可がない限り、処理に失敗します。さらに、HDFS ストレージは一時的であるため、クラスターが終了すると、テーブルデータは失われ、テーブルを再作成する必要があります。Glue を使用して Hive テーブルを作成するときは、Amazon S3LOCATION
で AWS を指定することをお勧めします。または、hive-site
設定分類を使用して、hive.metastore.warehouse.dir
の Amazon S3 で場所を指定できます。これは、すべての Hive テーブルに適用されます。テーブルが HDFS ロケーションで作成され、テーブルを作成したクラスターがまだ実行されている場合は、 Glue 内からテーブルロケーションを Amazon S3 AWS に更新できます。詳細については、「 AWS Glue デベロッパーガイド」の「 Glue コンソールでのテーブルの操作」を参照してください。 AWS引用符とアポストロフィを含むパーティション値はサポートされていません(例:
PARTITION (owner="Doe's").
)。列統計
は、emr-5.31.0 以降でサポートされています。 Hive 認可
の使用はサポートされていません。代替策として、AWS Glue リソースベースのポリシーを使用することを検討してください。詳細については、「Use Resource-Based Policies for Amazon EMR Access to Glue Data Catalog AWS」を参照してください。 Hive 制約
はサポートされていません。 Hive でのコストベースの最適化
はサポートされていません。 hive.metastore.partition.inherit.table.properties
の使用はサポートされていません。次のメタストア定数の使用はサポートされていません。
BUCKET_COUNT, BUCKET_FIELD_NAME, DDL_TIME, FIELD_TO_DIMENSION, FILE_INPUT_FORMAT, FILE_OUTPUT_FORMAT, HIVE_FILTER_FIELD_LAST_ACCESS, HIVE_FILTER_FIELD_OWNER, HIVE_FILTER_FIELD_PARAMS, IS_ARCHIVED, META_TABLE_COLUMNS, META_TABLE_COLUMN_TYPES, META_TABLE_DB, META_TABLE_LOCATION, META_TABLE_NAME, META_TABLE_PARTITION_COLUMNS, META_TABLE_SERDE, META_TABLE_STORAGE, ORIGINAL_LOCATION
。述語式を使用する場合、明示的な値が比較演算子の右側にある必要があります。そうしなければ、クエリが失敗する可能性があります。
正:
SELECT * FROM mytable WHERE time > 11
誤:
SELECT * FROM mytable WHERE 11 > time
Amazon EMR バージョン 5.32.0 および 6.3.0 以降では、述語式でのユーザー定義関数 (UDF) の使用がサポートされています。以前のバージョンを使用している場合、Hive がクエリの実行を最適化しようとするため、クエリが失敗する可能性があります。
一時テーブル
はサポートされていません。 Glue を使用して直接テーブルを作成するのではなく、Amazon EMR AWS を使用してアプリケーションを使用してテーブルを作成することをお勧めします。Glue AWS を使用してテーブルを作成すると、必須フィールドが欠落し、クエリ例外が発生する可能性があります。
EMR 5.20.0 以降では、 Glue Data Catalog をメタストアとして使用すると、Spark および Hive AWS に対してパラレルパーティションプルーニングが自動的に有効になります。この変更により、複数のリクエストを並列に実行してパーティションを取得できるため、クエリ計画時間が大幅に短縮されます。同時に実行できるセグメントの総数は、1~10 の範囲です。デフォルト値は 5 であり、これが推奨される設定です。
hive-site
設定分類のaws.glue.partition.num.segments
プロパティを指定すると、これを変更できます。スロットリングが発生した場合は、値を 1 に変更して機能をオフにすることができます。詳細については、「AWS Glue セグメント構造」を参照してください。