Verwenden Sie denAWS Glue-Datenkatalog als Metastore für Spark SQL - 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.

Verwenden Sie denAWS Glue-Datenkatalog als Metastore für Spark SQL

Mit Amazon EMR Version 5.8.0 oder höher können Sie Spark SQL so konfigurieren, dass derAWS Glue Data Catalog als Metastore verwendet wird. Wir empfehlen diese Konfiguration, wenn Sie einen persistenten Metastore oder einen gemeinsamen Metastore für verschiedene Cluster, Services, Anwendungen oder AWS-Konten benötigen.

AWSGlue ist ein vollständig verwalteter ETL-Service (Extrahieren, Transformieren und Laden), mit dessen Hilfe einfach und wirtschaftlich Ihre Daten einfach und wirtschaftlich Ihre Daten einfach und wirtschaftlich Ihre Daten zu kategorisieren, zu bereinigt, erweitert und erweitert und verschoben und verschoben werden können. DerAWS Glue Data Catalog bietet ein einheitliches Metadaten-Repository für eine Vielzahl von Datenquellen und Datenformaten, das sich in Amazon EMR sowie Amazon RDS, Amazon Redshift, Redshift Spectrum, Athena und jede Anwendung integrieren lässt, die mit dem Apache Hive-Metastore kompatibel ist. AWS Glue-Crawler können automatisch ein Schema aus Quelldaten in Amazon S3 abzuleiten und die zugehörigen Metadaten im Datenkatalog speichern. Weitere Informationen zum Datenkatalog finden Sie unter Den AWSGlue-Datenkatalog auffüllen im AWSGlue Developer Guide.

FürAWS Glue fallen separate Gebühren an. Für jeden bereitgestellten Entwicklungsendpunkt fällt ein Stundensatz an, der sekundengenau für jeden bereitgestellten Entwicklungsendpunkt fällt ein Stundensatz an, der sekundengenau fürAWS Glue-ETL-Aufträge und die Crawler-Laufzeit berechnet wird. Darüber hinaus fällt ein Stundensatz an, der sekundengenau für jeden bereitgestellten Entwicklungsendpunkt berechnet wird. Mit dem Datenkatalog können Sie bis zu einer Million Objekte kostenlos speichern. Wenn Sie mehr als eine Million Objekte speichern, fällt eine Gebühr von 1 USD für jeweils 100.000 zusätzliche Objekte an. Ein Objekt im Datenkatalog ist eine Tabelle, Partition oder Datenbank. Weitere Informationen finden Sie unter Glue-Preise.

Wichtig

Wenn Sie vor dem 14. August 2017 Tabellen mit Amazon Athena oder Amazon Redshift Spectrum erstellt haben, werden Datenbanken und Tabellen in einem von Athena verwalteten Katalog gespeichert, der vomAWS Glue Data Catalog getrennt ist. Um Amazon EMR in diese Tabellen zu integrieren, müssen Sie ein Upgrade auf denAWS Glue Data Catalog durchführen. Weitere Informationen finden Sie unter Upgrade auf denAWS Glue-Datenkatalog im Amazon Athena Athena-Benutzerhandbuch.

AWSGlue Data Catalog als Metastore angeben

Sie können denAWS Glue-Datenkatalog mithilfe derAWS Management ConsoleAWS CLI ,- oder Amazon EMR-API als Metastore angeben. Wenn Sie die CLI oder API verwenden, verwenden Sie die Konfigurationsklassifizierung für Spark, um den Datenkatalog zu spezifizieren. Darüber hinaus können Sie mit Amazon EMR 5.16.0 und höher die Konfigurationsklassifizierung verwenden, um einen Datenkatalog in einem anderen zu spezifizierenAWS-Konto. Wenn Sie die Konsole verwenden, können Sie den Datenkatalog mithilfe der erweiterten Optionen oder Schnelloptionen angeben.

Anmerkung

Die Option,AWS Glue Data Catalog zu verwenden, ist auch mit Zeppelin verfügbar, da Zeppelin mit Spark SQL-Komponenten installiert ist.

So spezifizieren Sie denAWS Glue Data Catalog als Metastore für Spark SQL mithilfe der Konsole

  1. Öffnen Sie die Amazon-EMR-Konsole unter https://console.aws.amazon.com/emr.

  2. Wählen Sie Create Cluster (Cluster erstellen) und Go to advanced options (Zu erweiterten Optionen) aus.

  3. Wählen Sie für Release die Option emr-5.8.0 oder höher aus.

  4. Wählen Sie unter Release eine der Optionen Spark oder Zeppelin aus.

  5. Wählen Sie unter Einstellungen für denAWS Glue-Datenkatalog die Option Für Spark-Tabellenmetadaten verwenden aus.

  6. Wählen Sie weitere Optionen für Ihren Cluster nach Bedarf aus, wählen Sie Next (Weiter) aus und konfigurieren Sie dann weitere Cluster-Optionen gemäß Ihrer Anwendung.

Um denAWS Glue-Datenkatalog als Metastore mithilfe der Konfigurationsklassifizierung anzugeben

Weitere Informationen zum Festlegen einer Konfigurationsklassifizierung mithilfe der AWS CLI bzw. der EMR-API finden Sie unter Konfigurieren von Anwendungen.

  • Geben Sie den Wert für hive.metastore.client.factory.class mit der Klassifizierung spark-hive-site an, wie in dem folgenden Beispiel gezeigt:

    [ { "Classification": "spark-hive-site", "Properties": { "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory" } } ]

    Um einen Datenkatalog in einem anderenAWS Konto anzugeben, fügen Sie diehive.metastore.glue.catalogid Eigenschaft hinzu, wie im folgenden Beispiel gezeigt. acct-idErsetzen Sie es durch dasAWS Konto des Datenkatalogs.

    [ { "Classification": "spark-hive-site", "Properties": { "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory", "hive.metastore.glue.catalogid": "acct-id" } } ]

IAM-Berechtigungen

Das EC2-Instanzprofil für einen Cluster muss über IAM-Berechtigungen fürAWS Glue-Aktionen verfügen. Wenn Sie die Verschlüsselung fürAWS Glue Data Catalog-Objekte aktivieren, muss die Rolle außerdem berechtigt sein, die für die VerschlüsselungAWS KMS key verwendeten Objekte zu verschlüsseln, zu entschlüsseln und zu generieren.

Berechtigungen fürAWS Glue-Aktionen

Wenn Sie das Standard-EC2-Instance-Profil für Amazon EMR verwenden, ist keine Aktion erforderlich. DieAmazonElasticMapReduceforEC2Role verwaltete Richtlinie, die dem beigefügt ist,EMR_EC2_DefaultRole ermöglicht alle erforderlichenAWS Glue-Aktionen. Wenn Sie jedoch ein benutzerdefiniertes EC2-Instanzprofil und Berechtigungen angeben, müssen Sie die entsprechendenAWS Glue-Aktionen konfigurieren. Verwenden Sie hierzu die verwaltete Richtlinie AmazonElasticMapReduceforEC2Role als Ausgangspunkt. Weitere Informationen finden Sie unter Servicerolle für Cluster-EC2-Instances (EC2-Instance-Profil) im Amazon EMR Management Guide.

Berechtigungen zum Verschlüsseln und Entschlüsseln vonAWS Glue Data Catalog

Ihr Instanzprofil benötigt die Erlaubnis, Daten mit Ihrem Schlüssel zu ver- und entschlüsseln. Sie müssen diese Berechtigungen nicht konfigurieren, wenn beide der folgenden Anweisungen zutreffen:

  • Sie aktivieren die Verschlüsselung fürAWS Glue Data Catalog-Objekte mithilfe verwalteter Schlüssel fürAWS Glue.

  • Sie verwenden einen Cluster, der sich im selben ClusterAWS-Konto wie derAWS Glue Data Catalog befindet.

Andernfalls müssen Sie die folgende Anweisung der Berechtigungsrichtlinie hinzufügen, die Ihrem EC2-Instance-Profil hinzugefügt wird.

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

Weitere Informationen zurAWS Glue Data Catalog-Verschlüsselung finden Sie unter Verschlüsseln Ihres Datenkatalogs im AWSGlue Developer Guide.

Ressourcenbasierte Berechtigungen

Wenn SieAWS Glue in Verbindung mit Hive, Spark oder Presto in Amazon EMR verwenden, unterstütztAWS Glue ressourcenbasierte Richtlinien zur Steuerung des Zugriffs auf Datenkatalogressourcen. Zu diesen Ressourcen gehören Datenbanken, Tabellen, Verbindungen und benutzerdefinierte Funktionen. Weitere Informationen finden Sie unter AWSGlue Resource Policies im AWSGlue Developer Guide.

Wenn Sie ressourcenbasierte Richtlinien verwenden, um den Zugriff aufAWS Glue von Amazon EMR aus zu beschränken, muss der Principal, den Sie in der Berechtigungsrichtlinie angeben, die Rolle ARN sein, die dem EC2-Instance-Profil zugeordnet ist, das bei der Erstellung eines Clusters angegeben wurde. Beispielsweise können Sie für eine ressourcenbasierte Richtlinie, die an einen Katalog angehängt ist, die Rolle ARN für die Standarddienstrolle für Cluster-EC2-Instances, EMR_EC2_DefaultRole als die angebenPrincipal, wobei das im folgenden Beispiel gezeigte Format verwendet wird:

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

Die Acct-ID kann sich von derAWS Glue-Konto-ID unterscheiden. Dies ermöglicht den Zugriff von EMR-Clustern in verschiedenen Konten. Sie können mehrere Principals angeben, die jeweils aus einem anderen Konto stammen.

Überlegungen bei der Verwendung vonAWS Glue Data Catalog

Beachten Sie die folgenden Punkte, wenn SieAWS Glue Data Catalog als Metastore mit Spark verwenden:

  • Das Vorhandensein einer Standarddatenbank ohne Speicherort-URI sorgt für Fehler beim Erstellen einer Tabelle. Um dieses Problem zu umgehen, verwenden Sie die LOCATION-Klausel, um den Bucket-Speicherort anzugeben, z. B. s3://EXAMPLE-DOC-BUCKET, wenn Sie CREATE TABLE verwenden. Alternativ können Sie auch Tabellen in einer anderen Datenbank als der Standarddatenbank erstellen.

  • Das Umbenennen von Tabellen ausAWS Glue heraus wird nicht unterstützt.

  • Wenn Sie eine Hive-Tabelle erstellen, ohne eine anzugebenLOCATION, werden die Tabellendaten an dem von derhive.metastore.warehouse.dir Eigenschaft angegebenen Ort gespeichert. Standardmäßig ist dies ein Speicherort in HDFS. Wenn ein anderer Cluster auf die Tabelle zugreifen muss, schlägt dies fehl, sofern er nicht über ausreichende Berechtigungen für den Cluster verfügt, der die Tabelle erstellt hat. Da der HDFS-Speicher vorübergehend ist, gehen außerdem die Tabellendaten verloren, wenn der Cluster beendet wird, und die Tabelle muss neu erstellt werden. Wir empfehlen, dass SieLOCATION in Amazon S3 a angeben, wenn Sie eine Hive-Tabelle mitAWS Glue erstellen. Alternativ können Sie diehive-site Konfigurationsklassifizierung verwenden, um einen Speicherort in Amazon S3 für anzugebenhive.metastore.warehouse.dir, der für alle Hive-Tabellen gilt. Wenn eine Tabelle an einem HDFS-Speicherort erstellt wurde und der Cluster, der sie erstellt hat, immer noch läuft, können Sie den Tabellenspeicherort inAWS Glue auf Amazon S3 aktualisieren. Weitere Informationen finden Sie unter Arbeiten mit Tabellen auf derAWS Glue Console im AWSGlue Developer Guide.

  • Partitionswerte, die Anführungszeichen und Apostrophe enthalten, werden nicht unterstützt, z. B.PARTITION (owner="Doe's").

  • Spaltenstatistiken werden für emr-5.31.0 und höher unterstützt.

  • Die Verwendung der Hive-Autorisierung wird nicht unterstützt. Erwägen Sie als Alternative die Verwendung ressourcenbasierterAWS Glue-Richtlinien. Weitere Informationen finden Sie unter Verwenden von ressourcenbasierten Richtlinien für den Amazon EMR Zugriff auf denAWS Glue-Datenkatalog.