Arbeiten mit einer Hierarchie mit mehreren Katalogen in AWS Glue Data Catalog mit Spark auf Amazon EMR - Amazon EMR

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Arbeiten mit einer Hierarchie mit mehreren Katalogen in AWS Glue Data Catalog mit Spark auf Amazon EMR

Sie können Ihren EMR Amazon-Cluster registrieren, um auf den AWS Glue-Datenkatalog zuzugreifen, der Tabellen und andere Katalogressourcen verschiedenen Verbrauchern zur Verfügung stellt. AWS Glue Data Catalog unterstützt eine Hierarchie mit mehreren Katalogen, die Ihre Daten über Amazon S3 S3-Datenseen hinweg vereinheitlicht. Es bietet außerdem sowohl einen Hive-Metastore API als auch einen Open-Source-Apache REST API Iceberg für den Zugriff auf die Daten. Diese Funktionen sind für Amazon EMR und andere Dienste wie Amazon Athena Amazon Redshift verfügbar.

Wie sind die Katalogressourcen organisiert

Wenn Sie Ressourcen im AWS Glue-Datenkatalog erstellen, können Sie von jeder SQL Engine aus darauf zugreifen, die den Apache Iceberg REST API - oder Hive-Metastore unterstützt. AWS Lake Formation verwaltet die Genehmigungen.

In AWS Glue Data Catalog sind Daten in einer logischen Hierarchie von Katalogen, Datenbanken und Tabellen organisiert:

  • Katalog — Ein logischer Container, der Objekte aus einem Datenspeicher wie Schemas oder Tabellen enthält.

  • Katalog zum Speichern von Redshift Managed Storage (RMS) -Tabellen — Wenn Sie Kataloge zum Speichern von RMS Tabellen verwalten, können Sie mit Iceberg auf diese Tabellen zugreifen.

  • Datenbank — Organisiert Datenobjekte wie Tabellen und Ansichten in einem Katalog.

  • Tabellen und Ansichten — Datenobjekte in einer Datenbank, die eine Abstraktionsebene mit einem verständlichen Schema bieten. Sie bieten eine Ebene für den Zugriff auf zugrunde liegende Daten, die in verschiedenen Formaten und an verschiedenen Orten vorliegen können.

Konfiguration eines Datenkatalogs für die Verwendung mit Amazon EMR

Zu Beginn konfigurieren Sie den Katalog so, dass er EMR Amazon-Tools unterstützt. Der AWS Glue-Datenkatalog bietet Hive-Metastore-Kompatibilität und REST Iceberg-Kompatibilität. APIs

Konfiguration von Amazon EMR mit einem Hive-Metastore

Informationen zur Einrichtung finden Sie unter Unterstützung des AWS Glue-Datenkatalogs für Spark-Jobs im AWS Glue-Benutzerhandbuch. In diesem Thema wird beschrieben, wie der AWS Glue-Datenkatalog als Hive-Metastore konfiguriert und als Endpunkt verfügbar gemacht wird. Darüber hinaus ist unter Verwenden des AWS Glue-Datenkatalogs als Apache Hive-Metastore für Spark eine EMR Amazon-Dokumentation verfügbar, die Ihnen zeigt, wie Sie AWS Glue Data Catalog als Spark-Metastore angeben.

Berechtigungen für den Zugriff auf Ressourcen im AWS Glue Data Catalog

In diesem Abschnitt werden die IAM Richtlinienanforderungen für die Verwendung von EMR Amazon-Tools mit Katalogdaten beschrieben. Nachdem Sie Ihren Cluster beim AWS Glue-Datenkatalog registriert haben, benötigen Sie die folgenden Berechtigungen, um die Erstellung und Änderungen des anschließend erstellten Datenkatalogs zu ermitteln:

  • kleben: GetCatalog

  • kleben: GetCatalogs

  • Sätze: AssumeRole

  • sts: TagSession

  • sts: SetContext

  • sts: SetSourceIdentity

In den meisten Fällen empfehlen wir, bei der Zuweisung von Berechtigungen eine IAM Rolle zu erstellen und ihr Berechtigungen zuzuweisen.

Um Katalogdaten abzufragen, müssen Sie außerdem die Berechtigungen für den Datenkatalog mithilfe von AWS Lake Formation festlegen. Weitere Informationen zum Festlegen von Berechtigungen für Datenkataloge finden Sie unter Erteilen und Widerrufen von Berechtigungen für Datenkatalogressourcen. AWS Lake Formation

Nachdem Sie Ihren Cluster erstellt und konfiguriert und die Berechtigungen für Ihre Katalogobjekte festgelegt haben, können Sie Jobs zum Abfragen und Verarbeiten von Daten einreichen.

Konfigurieren Sie Spark für den Zugriff auf eine Hierarchie mit mehreren Katalogen in AWS Glue Data Catalog

Mit EMR 7.5 können Sie Spark so konfigurieren, dass die Multi-Katalog-Hierarchie von AWS Glue verwendet wird. Eine Hierarchie mit mehreren Katalogen ermöglicht Ihnen:

  • Bringen Sie Ihre Redshift Managed Storage (RMS) -Daten wie Tabellen, Ansichten und materialisierte Ansichten aus bestehenden Amazon Redshift Data Warehouses in AWS Glue Data Catalog. Sie können diese Objekte mit EMR on EC2 und Serverless abfragen. EMR

  • Erstellen Sie RMS Kataloge, fügen AWS Glue Data Catalog hinzu und speichern Sie Daten RMS mit Zero ETL und fragen Sie die Daten mit Iceberg-kompatiblen Abfrage-Engines ab.

  • Erstellen Sie verwaltete Iceberg-Tabellen in AWS Glue Data Catalog mit umfassendem Speichermanagement, das Komprimierung, Snapshots und Aufbewahrung umfasst.

Verbindung zu mehreren Katalogen herstellen, wenn Sie eine Spark-Sitzung initialisieren

Die folgenden Beispiele zeigen, wie Sie die interaktive Spark-Shell, Spark Submit oder Amazon EMR Notebooks verwenden können, um mit der Multi-Katalog-Hierarchie von AWS Glue zu arbeiten.

spark-shell
  1. Connect zum Master-Knoten her mitSSH. Weitere Informationen finden Sie unter Connect dem Master-Knoten herstellen SSH im Amazon EMR Management Guide.

  2. Geben Sie den folgenden Befehl ein, um die Spark-Shell zu starten. Um die PySpark Shell zu verwenden, spark-shell ersetzen Sie durchpyspark.

    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. Connect zum Master-Knoten her mitSSH. Weitere Informationen finden Sie unter Connect dem Master-Knoten herstellen SSH im Amazon EMR Management Guide.

  2. Geben Sie den folgenden Befehl ein, um die Spark-Sitzung für Spark zu starten.

    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

Um eine Spark-Sitzung mit EMR Studio-Notebooks zu initialisieren, konfigurieren Sie Ihre Spark-Sitzung mit dem %%configure magischen Befehl in Ihrem EMR Amazon-Notizbuch, wie im folgenden Beispiel. Weitere Informationen finden Sie unter Use EMR Notebooks Magic im Amazon EMR Management Guide.

%%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

Führen Sie das folgende Beispiel ausCLI, um eine Spark-Sitzung mit dem zu initialisieren. Weitere Informationen zur Angabe einer Konfigurationsklassifizierung mithilfe von AWS CLI und Amazon EMR API finden Sie unter Anwendungen konfigurieren.

[ { "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" } } ]

Initialisieren Sie eine Spark-Sitzung mit Redshift Managed Storage mit AWS Glue Data Catalog

Der folgende Beispielbefehl initialisiert eine Spark-Sitzung mit dem AWS Glue-Datenkatalog.

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

Das folgende Beispiel initialisiert eine Spark-Sitzung mit dem Iceberg REST API und Redshift Managed Storage with AWS Glue Data Catalog.

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

Weitere Informationen zur Verwendung einer AWS Glue-Hierarchie mit mehreren Katalogen mit Spark Iceberg finden Sie unter Verwenden eines Iceberg-Clusters mit Spark.

Überlegungen und Einschränkungen für eine Konfiguration mit mehreren Katalogen

  • Die Verwendung einer Hierarchie mit mehreren Katalogen mit Apache Hive Metastore wird nicht unterstützt.

  • Die Verwendung einer Hierarchie mit mehreren Katalogen mit Apache Iceberg unterstützt bei Verwendung keinen Fallback auf Apache Hive Metastore. SparkSessionCatalog

  • EMRauf EC2 Clustern mit Runtime-Rolle wird die Hierarchie mit mehreren Katalogen nicht unterstützt.

  • EMRauf EC2 Clustern, deren Aktivierung aktiviert ist, unterstützt AWS Lake Formation keine Hierarchie mit mehreren Katalogen.