Amazon で Spark を使用して AWS Glue Data Catalog でマルチカタログ階層を操作する EMR - Amazon EMR

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

Amazon で Spark を使用して AWS Glue Data Catalog でマルチカタログ階層を操作する EMR

Amazon EMRクラスターを登録して AWS Glue Data Catalog にアクセスできます。これにより、テーブルやその他のカタログリソースをさまざまなコンシューマーが利用できるようになります。 AWS Glue Data Catalog は、Amazon S3 データレイク間でデータを統合するためのマルチカタログ階層をサポートしています。また、データにアクセスRESTAPIするための Hive メタストアAPIとオープンソースの Apache Iceberg の両方を提供します。これらの機能は、Amazon EMR および Amazon Athena や Amazon Redshift などの他の サービスで使用できます。

カタログリソースの整理方法

AWS Glue データカタログでリソースを作成すると、Apache Iceberg RESTAPIまたは Hive メタストアをサポートする任意のSQLエンジンからリソースにアクセスできます。 AWS Lake Formation はアクセス許可を管理します。

AWS Glue Data Catalog では、データはカタログ、データベース、テーブルの論理階層に整理されます。

  • カタログ – スキーマやテーブルなど、データストアからオブジェクトを保持する論理コンテナ。

  • Redshift Managed Storage (RMS) テーブルを保存するカタログ – RMSテーブルを保存するカタログを管理する場合、Iceberg を使用してこれらのテーブルにアクセスできます。

  • データベース – カタログ内のテーブルやビューなどのデータオブジェクトを整理します。

  • テーブルとビュー – 抽象化レイヤーと理解可能なスキーマを提供するデータベース内のデータオブジェクト。基盤となるデータにアクセスするためのレイヤーを提供します。このデータは、さまざまな形式や場所にある場合があります。

Amazon で使用するデータカタログの設定 EMR

開始するには、Amazon EMR ツールをサポートするようにカタログを設定します。 AWS Glue データカタログは、Hive メタストア互換性と Iceberg REST互換の を提供しますAPIs。

Hive メタストアEMRを使用した Amazon の設定

これを設定する方法については、「 AWS Glue ユーザーガイド」の「Spark ジョブの Glue データカタログサポート」を参照してください。 AWS このトピックでは、 Glue Data Catalog AWS を Hive メタストアとして設定し、エンドポイントとして利用できるようにする方法について説明します。さらに、Spark AWS の Apache Hive メタストアとして Glue Data Catalog を使用するで、Spark メタストアとして Glue Data Catalog を指定する方法を示す Amazon EMRドキュメントも用意されています。 AWS

Glue Data Catalog AWS のリソースにアクセスするためのアクセス許可

このセクションでは、カタログデータで Amazon EMR ツールを使用するためのIAMポリシー要件について説明します。クラスターを AWS Glue データカタログに登録した後、後で作成されたデータカタログの作成と変更を検出するには、次のアクセス許可が必要です。

  • Glue:GetCatalog

  • Glue:GetCatalogs

  • sts:AssumeRole

  • sts:TagSession

  • sts:SetContext

  • sts:SetSourceIdentity

ほとんどの場合、アクセス許可を割り当てるときは、 IAMロールを作成してアクセス許可を割り当てることをお勧めします。

さらに、カタログデータをクエリするには、 を使用してデータカタログのアクセス許可を設定する必要があります AWS Lake Formation。でデータカタログのアクセス許可を設定する方法の詳細については AWS Lake Formation、「Data Catalog リソースに対するアクセス許可の付与と取り消し」を参照してください。

クラスターを作成して設定し、カタログオブジェクトに対するアクセス許可を設定したら、データをクエリおよび処理するためのジョブを送信できます。

Glue データカタログのマルチカタログ階層にアクセスするように Spark AWS を設定する

EMR 7.5 では、 Glue のマルチカタログ階層を使用するように Spark AWS を設定できます。マルチカタログ階層を使用すると、次のことが可能になります。

  • テーブル、ビュー、マテリアライズドビューなどの Redshift Managed Storage (RMS) データを既存の Amazon Redshift データウェアハウスから AWS Glue データカタログに持ち込みます。これらのオブジェクトは、 EC2および EMR Serverless EMR で を使用してクエリできます。

  • RMS カタログを作成し、ゼロRMSETLを使用してデータカタログを AWS グルーし、データを に保存し、Iceberg 互換クエリエンジンでデータをクエリします。

  • 圧縮 AWS 、スナップショット、保持を含むフル機能のストレージ管理を使用して、 Glue Data Catalog にマネージド Iceberg テーブルを作成します。

Spark セッションの初期化時にマルチカタログに接続する

次の例は、インタラクティブな Spark シェル、Spark 送信、または Amazon EMR Notebooks を使用して AWS Glue のマルチカタログ階層を操作する方法を示しています。

spark-shell
  1. を使用してマスターノードに接続しますSSH。詳細については、「Amazon EMR 管理ガイド」の「 を使用してマスターノードに接続するSSH」を参照してください。

  2. 以下のコマンドを入力して、Spark シェルを起動します。シェルを使用するには、 PySpark を spark-shellに置き換えますpyspark

    spark-shell \ --conf spark.sql.catalog.my_catalog=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.my_catalog.warehouse=s3://amzn-s3-demo-bucket/prefix/ --conf spark.sql.catalog.my_catalog.type=glue \ --conf spark.sql.catalog.my_catalog.glue.id=Glue RMS catalog ID \ --conf spark.sql.defaultCatalog=my_catalog \ --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions
spark-submit
  1. を使用してマスターノードに接続しますSSH。詳細については、「Amazon EMR 管理ガイド」の「 を使用してマスターノードに接続するSSH」を参照してください。

  2. 次のコマンドを入力して、Spark の Spark セッションを起動します。

    spark-submit \ --conf spark.sql.catalog.my_catalog=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.my_catalog.warehouse=s3://amzn-s3-demo-bucket1/prefix \ --conf spark.sql.catalog.my_catalog.type=glue \ --conf spark.sql.catalog.my_catalog.glue.id=Glue RMS catalog ID \ --conf spark.sql.defaultCatalog=my_catalog \ --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions
EMR Studio notebooks

EMR Studio ノートブックを使用して Spark セッションを初期化するには、次の例のように、Amazon EMRノートブックの%%configureマジックコマンドを使用して Spark セッションを設定します。詳細については、「Amazon 管理ガイド」のEMR「ノートブックマジックの使用」を参照してください。 EMR

%%configure -f{ "conf":{ "spark.sql.catalog.my_catalog":"org.apache.iceberg.spark.SparkCatalog", "spark.sql.catalog.my_catalog.type":"glue", "spark.sql.catalog.my_catalog.glue.id":"Glue RMS catalog ID", "spark.sql.catalog.my_catalog.warehouse":"s3://amzn-s3-demo-bucket1/prefix/", "spark.sql.defaultCatalog", "my_catalog", "spark.sql.extensions":"org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions" } }
CLI

を使用して Spark セッションを初期化するにはCLI、次のサンプルを実行します。 AWS CLI と Amazon を使用して設定分類を指定する方法の詳細についてはEMRAPI、「アプリケーションの設定」を参照してください。

[ { "Classification": "spark-defaults", "Properties": { "spark.sql.catalog.my_catalog":"org.apache.iceberg.spark.SparkCatalog", "spark.sql.catalog.my_catalog.type":"glue", "spark.sql.catalog.my_catalog.glue.id":"Glue RMS catalog ID", "spark.sql.catalog.my_catalog.warehouse":"s3://amzn-s3-demo-bucket1/prefix/", "spark.sql.defaultCatalog", "my_catalog", "spark.sql.extensions":"org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions" } } ]

Glue データカタログを使用して Redshift マネージドストレージへの Spark AWS セッションを初期化する

次のサンプルコマンドは、 Glue データカタログで Spark AWS セッションを初期化します。

spark-sql \ --conf spark.sql.catalog.rms=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.rms.type=glue \ --conf spark.sql.catalog.rms.glue.id=Glue RMS catalog ID \ --conf spark.sql.defaultCatalog=rms --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions

次のサンプルは、 Glue データカタログで Iceberg RESTAPIと Redshift マネージドストレージを使用して Spark AWS セッションを初期化します。

spark-sql \ --conf spark.sql.catalog.rms=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.rms.type=rest \ --conf spark.sql.catalog.rms.warehouse=glue RMS catalog ID \ --conf spark.sql.catalog.rms.uri=Glue endpoint URI/iceberg \ --conf spark.sql.catalog.rms.rest.sigv4-enabled=true \ --conf spark.sql.catalog.rms.rest.signing-name=glue \ --conf spark.sql.defaultCatalog=rms \ --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions

Spark Iceberg で AWS Glue マルチカタログ階層を使用する方法の詳細については、「Spark で Iceberg クラスターを使用する」を参照してください。

マルチカタログ設定に関する考慮事項と制限事項

  • Apache Hive メタストアでのマルチカタログ階層の使用はサポートされていません。

  • Apache Iceberg でマルチカタログ階層を使用すると、 の使用時に Apache Hive メタストアへのフォールバックをサポートできませんSparkSessionCatalog

  • EMR ランタイムロールを持つEC2クラスターの は、マルチカタログ階層をサポートしていません。

  • EMR が有効になっているEC2クラスターの は、マルチカタログ階層をサポート AWS Lake Formation していません。