Verwenden Sie den AWS Glue Data Catalog als Metastore für Spark SQL
Mit Amazon-EMR-Version 5.8.0 oder höher können Sie Spark SQL so konfigurieren, dass der AWS 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.
AWS Glue ist ein vollständig verwalteter ETL-Service (Extract, Transform, Load – ETL), mit dessen Hilfe einfach und wirtschaftlich Ihre Daten kategorisiert, bereinigt, erweitert und zwischen verschiedenen Datenspeichern verschoben werden können. Der AWS Glue Data Catalog stellt ein einheitliches Metadaten-Repository für verschiedene Datenquellen und Datenformate bereit und kann in Amazon EMR, und in Amazon RDS, Amazon Redshift, Redshift Spectrum, Athena sowie alle anderen Anwendungen integriert werden, die mit dem Apache-Hive-Metastore kompatibel sind. AWS Glue-Crawler können Schemata automatisch aus Quelldaten in Amazon S3 ableiten und die zugehörigen Metadaten im Datenkatalog speichern. Weitere Informationen zum Datenkatalog finden Sie unter Füllen des AWS Glue Data Catalog im AWS-Glue-Entwicklerhandbuch.
Für AWS Glue fallen separate Gebühren an. Es gibt einen monatlichen Tarif für die Speicherung und den Zugriff auf die Metadaten im Datenkatalog, einen stündlichen Tarif, der pro Minute für AWS-Glue-ETL-Aufträge und Crawler-Laufzeit abgerechnet wird, und einen stündlichen Tarif, der pro Minute für jeden bereitgestellten Entwicklungsendpunkt abgerechnet wird. Der Datenkatalog ermöglicht Ihnen die gebührenfreie Speicherung von bis zu einer Million Objekten. 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. Im Data Catalog ist ein Objekt eine Tabelle, eine Partition oder eine 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 vom AWS Glue Data Catalog getrennt ist. Um Amazon EMR mit diesen Tabellen zu integrieren, müssen Sie ein Upgrade auf den AWS Glue Data Catalog durchführen. Weitere Informationen finden Sie unter Upgraden auf den AWS Glue Data Catalog im Amazon-Athena-Benutzerhandbuch.
AWS Glue Data Catalog als Metastore angeben
Sie können den AWS Glue Data Catalog mithilfe der Amazon-EMR-API, AWS Management Console, AWS CLI, oder als Metastore angeben. Wenn Sie die CLI oder API verwenden, verwenden Sie die Konfigurationsklassifizierung für Spark, um den Datenkatalog anzugeben. Darüber hinaus können Sie mit Amazon EMR 5.16.0 und höher die Konfigurationsklassifizierung verwenden, um einen Data Catalog in einem anderen AWS-Konto anzugeben. Wenn Sie die Konsole verwenden, können Sie den Data Catalog mit den erweiterten Optionen oder den Schnelloptionen angeben.
Anmerkung
Die Option zum Verwenden des AWS Glue Data Catalog ist auch mit Zeppelin verfügbar, da Zeppelin mit Spark-SQL-Komponenten installiert wird.
IAM-Berechtigungen
Das EC2-Instance-Profil für einen Cluster muss IAM-Berechtigungen für AWS-Glue-Aktionen besitzen. Wenn Sie für AWS-Glue-Data-Catalog-Objekte Verschlüsselung aktivieren, muss die Rolle auch zum Verschlüsseln, Entschlüsseln und Generieren des AWS KMS key berechtigt sein, der zur Verschlüsselung verwendet wird.
Berechtigungen für AWS-Glue-Aktionen
Wenn Sie das standardmäßige EC2-Instance-Profil für Amazon EMR verwenden, ist keine Aktion erforderlich. Die von AmazonElasticMapReduceforEC2Role
verwaltete Richtlinie, die an die angehängt ist, ermöglicht EMR_EC2_DefaultRole
alle erforderlichen AWS-Glue-Aktionen. Wenn Sie jedoch ein benutzerdefiniertes EC2-Instance-profil und Berechtigungen angeben, müssen Sie die entsprechenden AWS-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 Verwaltungshandbuch für Amazon EMR.
Berechtigungen zum Ver- und Entschlüsseln von AWS Glue Data Catalog
Ihr Instance-Profil benötigt die Erlaubnis, Daten mithilfe Ihres Schlüssels zu verschlüsseln und zu entschlüsseln. Sie müssen diese Berechtigungen nicht konfigurieren, wenn die beiden folgenden Aussagen zutreffen:
-
Sie aktivieren die Verschlüsselung für Objekte von AWS Glue Data Catalog mithilfe von verwalteten Schlüsseln für AWS Glue.
-
Sie verwenden einen Cluster, der sich im selben AWS-Konto befindet wie der AWS Glue Data Catalog.
Andernfalls müssen Sie die folgende Anweisung der Berechtigungsrichtlinie hinzufügen, die mit Ihrem EC2-Instance-Profil verknüpft ist.
[ { "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 zur Verschlüsselung des AWS Glue Data Catalog finden Sie unter Verschlüsseln Ihres Datenkatalogs im AWS Glue-Entwicklerhandbuch.
Ressourcenbasierte Berechtigungen
Wenn Sie AWS Glue in Verbindung mit Hive, Spark oder Presto in Amazon EMR verwenden, unterstützt AWS 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 Verwenden von ressourcenbasierten Richtlinien für AWS Glue im AWS-Glue-Entwicklerhandbuch.
Wenn Sie ressourcenbasierte Richtlinien verwenden, um den Zugriff auf AWS Glue von Amazon EMR aus zu beschränken, muss der Prinzipal, den Sie in der Berechtigungsrichtlinie angeben, der Rollen-ARN sein, der dem EC2-Instance-Profil zugeordnet ist, das bei der Erstellung eines Clusters angegeben wird. Beispielsweise können Sie für eine ressourcenbasierte Richtlinie, die an einen Katalog angehängt ist, den Rollen-ARN für die Standard-Servicerolle für Cluster-EC2-Instances, EMR_EC2_DefaultRole
, als Principal
angeben. Verwenden Sie dazu das im folgenden Beispiel gezeigte Format:
arn:aws:iam::
acct-id
:role/EMR_EC2_DefaultRole
Die Konto-ID
kann sich von der AWS Glue-Konto-ID unterscheiden. Dies ermöglicht den Zugriff von EMR-Clustern in verschiedenen Konten aus. Sie können mehrere Principals angeben, von denen jeder aus einem anderen Konto stammt.
Überlegungen zur Verwendung von AWS Glue Data Catalog
Beachten Sie die folgenden Elemente, wenn Sie AWS Glue Datenkatalog 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://
, wenn SieEXAMPLE-DOC-BUCKET
CREATE TABLE
verwenden. Alternativ können Sie auch Tabellen in einer anderen Datenbank als der Standarddatenbank erstellen. Das Umbenennen von Tabellen in AWS Glue wird nicht unterstützt.
Wenn Sie eine Hive-Tabelle erstellen, ohne eine
LOCATION
anzugeben, werden die Tabellendaten an dem in der Eigenschafthive.metastore.warehouse.dir
angegebenen Ort gespeichert. Standardmäßig ist dies ein Speicherort in HDFS. Wenn ein anderer Cluster auf die Tabelle zugreifen muss, schlägt er fehl, sofern er nicht über ausreichende Berechtigungen für den Cluster verfügt, der die Tabelle erstellt hat. Da 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 angeben, wenn Sie eine Hive-Tabelle mit AWS Glue erstellen. Alternativ können Sie diehive-site
-Konfigurationsklassifizierung verwenden, um einen Speicherort in Amazon S3 fürhive.metastore.warehouse.dir
anzugeben, der für alle Hive-Tabellen gilt. Wenn eine Tabelle an einem HDFS-Speicherort erstellt wurde und der Cluster, der sie erstellt hat, noch läuft, können Sie den Tabellenspeicherort von AWS Glue aus auf Amazon S3 aktualisieren. Weitere Informationen zu Auftragsausführungen finden Sie unter Arbeiten mit Aufträgen in der AWS Glue-Konsole im AWS-Glue-Entwicklerhandbuch.Partitionswerte, die Anführungszeichen und Apostrophe enthalten, werden nicht unterstützt, zum Beispiel
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. Als Alternative sollten Sie die Verwendung ressourcenbasierter Richtlinien für AWS Glue in Betracht ziehen. Weitere Informationen finden Sie unter Verwenden Sie ressourcenbasierte Richtlinien für den Amazon-EMR-Zugriff auf den AWS-Glue-Datenkatalog.