Google-Cloud-Storage-Konnektor für Amazon Athena - Amazon Athena

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.

Google-Cloud-Storage-Konnektor für Amazon Athena

Der Google-Cloud-Storage-Konnektor für Amazon Athena ermöglicht es Amazon Athena, Abfragen für Parquet- und CSV-Dateien auszuführen, die in einem Google Cloud Storage (GCS)-Bucket gespeichert sind. Nachdem Sie eine oder mehrere Parquet- oder CSV-Dateien in einem unpartitionierten oder partitionierten Ordner in einem GCS-Bucket gruppiert haben, können Sie diese in einer AWS Glue-Datenbanktabelle organisieren.

Wenn Sie Lake Formation in Ihrem Konto aktiviert haben, AWS Serverless Application Repository muss die IAM-Rolle für Ihren Athena Federated Lambda Connector, den Sie in der bereitgestellt haben, Lesezugriff in Lake Formation auf den haben. AWS Glue Data Catalog

Einen Artikel, der zeigt, wie Sie mit Athena Abfragen für Parquet- oder CSV-Dateien in einem GCS-Bucket ausführen können, finden Sie im AWS Big-Data-Blogbeitrag Verwenden Sie Amazon Athena, um in der Google Cloud Platform gespeicherte Daten abzufragen.

Voraussetzungen

Einschränkungen

  • Schreiboperationen wie DDL werden nicht unterstützt.

  • Alle relevanten Lambda-Grenzwerte. Weitere Informationen finden Sie unter Lambda quotas (Lambda-Kontingente) im AWS Lambda -Entwicklerhandbuch.

  • Derzeit unterstützt der Connector nur den VARCHAR Typ für Partitionsspalten (stringoder varchar in einem AWS Glue Tabellenschema). Andere Partitionsfeldtypen lösen Fehler aus, wenn Sie sie in Athena abfragen.

Bedingungen

Die folgenden Begriffe beziehen sich auf den GCS-Konnektor.

  • Handler – Ein Lambda-Handler, der auf Ihren GCS-Bucket zugreift. Ein Handler kann für Metadaten oder für Datensätze verwendet werden.

  • Metadaten-Handler – Ein Lambda-Handler, der Metadaten von Ihrem GCS-Bucket abruft.

  • Datensatz-Handler – Ein Lambda-Handler, der Datensätze aus Ihrem GCS-Bucket abruft.

  • Zusammengesetzter Handler – Ein Lambda-Handler, der sowohl Metadaten als auch Datensätze aus Ihrem GCS-Bucket abruft.

Unterstützte Dateitypen

Der GCS-Konnektor unterstützt die Parquet- und CSV-Dateitypen.

Anmerkung

Stellen Sie sicher, dass Sie CSV- und Parquet-Dateien nicht im selben GCS-Bucket oder -Pfad platzieren. Dies kann zu einem Laufzeitfehler führen, wenn versucht wird, Parquet-Dateien als CSV zu lesen oder umgekehrt.

Parameter

Verwenden Sie die Lambda-Umgebungsvariablen in diesem Abschnitt zum Konfigurieren des GCS-Konnektors.

  • spill_bucket – Gibt den Amazon S3-Bucket für Daten an, die die Lambda-Funktionsgrenzen überschreiten.

  • spill_prefix – (Optional) Ist standardmäßig ein Unterordner im angegebenen spill_bucket genannt athena-federation-spill. Wir empfehlen Ihnen, einen Amazon-S3-Speicher-Lebenszyklus an dieser Stelle zu konfigurieren, um die Überlaufe zu löschen, die älter als eine festgelegte Anzahl von Tagen oder Stunden sind.

  • spill_put_request_headers – (Optional) Eine JSON-codierte Zuordnung von Anforderungsheadern und Werten für die Amazon-S3-putObject-Anforderung, die für den Überlauf verwendet wird (z. B. {"x-amz-server-side-encryption" : "AES256"}). Weitere mögliche Header finden Sie PutObjectin der Amazon Simple Storage Service API-Referenz.

  • kms_key_id – (Optional) Standardmäßig werden alle Daten, die an Amazon S3 gesendet werden, mit dem AES-GCM-authentifizierten Verschlüsselungsmodus und einem zufällig generierten Schlüssel verschlüsselt. Damit Ihre Lambda-Funktion stärkere Verschlüsselungsschlüssel verwendet, die von KMS generiert werden, wiea7e63k4b-8loc-40db-a2a1-4d0en2cd8331, können Sie eine ID einer Verschlüsselung angeben.

  • disable_spill_encryption – (Optional) Bei Einstellung auf True, wird die Spill-Verschlüsselung deaktiviert. Die Standardeinstellung ist False, sodass Daten, die an S3 übertrragen werden, mit AES-GCM verschlüsselt werden - entweder mit einem zufällig generierten Schlüssel oder mit KMS zum Generieren von Schlüsseln. Das Deaktivieren der Überlauf-Verschlüsselung kann die Leistung verbessern, insbesondere wenn Ihr Überlauf-Standort eine serverseitige Verschlüsselung verwendet.

  • secret_manager_gcp_creds_name — Der Name des Geheimnisses, das Ihre GCS-Anmeldeinformationen im JSON-Format enthält ( AWS Secrets Manager z. B.). GoogleCloudPlatformCredentials

Einrichten von Datenbanken und Tabellen in AWS Glue

Da die integrierten Schemainferenzfunktionen des GCS-Connectors begrenzt sind, empfehlen wir, dass Sie sie AWS Glue für Ihre Metadaten verwenden. Die folgenden Verfahren zeigen, wie Sie eine Datenbank und eine Tabelle erstellen AWS Glue , auf die Sie von Athena aus zugreifen können.

Erstellen einer Datenbank in AWS Glue

Sie können die AWS Glue Konsole verwenden, um eine Datenbank für die Verwendung mit dem GCS-Connector zu erstellen.

Um eine Datenbank zu erstellen in AWS Glue
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die AWS Glue Konsole unter https://console.aws.amazon.com/glue/.

  2. Wählen Sie im Navigationsbereich Databases (Datenbanken) aus.

  3. Wählen Sie Add database (Datenbank hinzufügen).

  4. Geben Sie unter Name einen Namen für die Datenbank ein, die Sie mit dem GCS-Konnektor verwenden möchten.

  5. Geben Sie für Standort den Wert s3://google-cloud-storage-flag. Dieser Speicherort teilt dem GCS-Konnektor mit, dass die AWS Glue Datenbank Tabellen für GCS-Daten enthält, die in Athena abgefragt werden sollen. Der Konnektor erkennt Datenbanken in Athena, die dieses Flag haben und ignoriert Datenbanken, die dies nicht tun.

  6. Wählen Sie Datenbank erstellen aus.

Erstellen einer Tabelle in AWS Glue

Jetzt können Sie eine Tabelle für die Datenbank erstellen. Wenn Sie eine AWS Glue Tabelle zur Verwendung mit dem GCS-Connector erstellen, müssen Sie zusätzliche Metadaten angeben.

Um eine Tabelle in der AWS Glue Konsole zu erstellen
  1. Wählen Sie in der AWS Glue Konsole im Navigationsbereich Tabellen aus.

  2. Wählen Sie auf der Seite Tables (Tabellen) die Option Add table (Tabelle hinzufügen) aus.

  3. Geben Sie auf der Seite Set table properties (Tabelleneigenschaften festlegen) die folgenden Informationen ein.

    • Name – Ein eindeutiger Name für die Tabelle.

    • Datenbank – Wählen Sie die AWS Glue -Datenbank aus, die Sie für den GCS-Konnektor erstellt haben.

    • Pfad einbeziehen – Geben Sie im Abschnitt Data store (Datenspeicher) für Include path (Pfad einbeziehen) den URI-Speicherort für GCS ein, dem das Präfix gs:// (z. B. gs://gcs_table/data/) vorangestellt ist. Wenn Sie über einen oder mehrere Partitionsordner verfügen, nehmen Sie diese nicht in den Pfad auf.

      Anmerkung

      Wenn Sie den Pfad eingeben, der nicht zur s3://-Tabelle gehört, zeigt die AWS Glue -Konsole einen Fehler an. Sie können diesen Fehler ignorieren. Die Tabelle wird erfolgreich erstellt.

    • Datenformat – Wählen Sie als Classification (Klassifizierung) CSV oder Parquet aus.

  4. Wählen Sie Weiter aus.

  5. Auf der Seite Choose or define schema (Schema auswählen oder definieren) wird das Definieren eines Tabellenschemas dringend empfohlen, ist jedoch nicht zwingend erforderlich. Wenn Sie kein Schema definieren, versucht der GCS-Konnektor, ein Schema für Sie abzuleiten.

    Führen Sie eine der folgenden Aktionen aus:

    • Wenn der GCS-Konnektor versuchen soll, ein Schema für Sie abzuleiten, wählen Sie Next (Weiter) und dann Create (Erstellen) aus.

    • Um selbst ein Schema zu definieren, folgen Sie den Schritten im nächsten Abschnitt.

Definieren Sie ein Tabellenschema in AWS Glue

Das Definieren eines Tabellenschemas in AWS Glue erfordert mehr Schritte, gibt Ihnen jedoch mehr Kontrolle über den Tabellenerstellungsprozess.

So definieren Sie ein Schema für Ihre Tabelle in AWS Glue
  1. Wählen Sie auf der Seite Choose or define schema (Schema auswählen oder definieren) die Option Add (Hinzufügen) aus.

  2. Verwenden Sie das Dialogfeld Add schema entry (Schemaeintrag hinzufügen), um einen Spaltennamen und einen Datentyp anzugeben.

  3. Um die Spalte als Partitionsspalte zu kennzeichnen, wählen Sie die Option Set as partition key (Als Partitionsschlüssel festlegen) aus.

  4. Wählen Sie Save (Speichern), um die Spalte zu speichern.

  5. Wählen Sie Add (Hinzufügen), um eine weitere Spalte hinzuzufügen.

  6. Wenn Sie alle Spalten hinzugefügt haben, wählen Sie Next (Weiter).

  7. Überprüfen Sie auf der Seite Review and create (Überprüfen und erstellen) die Tabelle und wählen Sie dann Create (Erstellen) aus.

  8. Wenn Ihr Schema Partitionsinformationen enthält, führen Sie die Schritte im nächsten Abschnitt aus, um den Eigenschaften der Tabelle in AWS Glue ein Partitionsmuster hinzuzufügen.

Hinzufügen eines Partitionsmusters zu Tabelleneigenschaften in AWS Glue

Wenn Ihre GCS-Buckets über Partitionen verfügen, müssen Sie das Partitionsmuster zu den Eigenschaften der Tabelle in AWS Glue hinzufügen.

Um Partitionsinformationen zu Tabelleneigenschaften hinzuzufügen AWS Glue
  1. Wählen Sie auf der Detailseite der Tabelle, in der Sie erstellt haben AWS Glue, Aktionen, Tabelle bearbeiten aus.

  2. Scrollen Sie auf der Seite Edit table (Tabelle bearbeiten) nach unten zum Abschnitt Table properties (Tabelleneigenschaften).

  3. Wählen Sie Add (Hinzufügen), um einen Partitionsschlüssel hinzuzufügen.

  4. Geben Sie für Key (Schlüssel) partition.pattern ein. Dieser Schlüssel definiert das Ordnerpfadmuster.

  5. Geben Sie für Value (Wert) ein Ordnerpfadmuster wie StateName=${statename}/ZipCode=${zipcode}/ ein, wobei statename und zipcode eingeschlossen von ${} Partitionsspaltennamen sind. Der GCS-Konnektor unterstützt sowohl Hive- als auch Nicht-Hive-Partitionsschemas.

  6. Klicken Sie auf Save , sobald Sie fertig sind.

  7. Um die soeben erstellten Tabelleneigenschaften anzuzeigen, wählen Sie die Registerkarte Advanced properties (Erweiterte Eigenschaften) aus.

An dieser Stelle können Sie zur Athena-Konsole navigieren. Die Datenbank und die Tabelle, in der Sie erstellt haben, AWS Glue stehen für Abfragen in Athena zur Verfügung.

Datentypunterstützung

Die folgenden Tabellen zeigen die unterstützten Datentypen für CSV und Parquet.

CSV

Nature of data (Art der Daten) Inferred data type (Abgeleiteter Datentyp)
Daten sehen aus wie eine Zahl BIGINT
Daten sehen aus wie eine Zeichenfolge VARCHAR
Daten sehen aus wie Fließkommazahlen (Float, Double oder Decimal) DOUBLE
Daten sehen aus wie ein Datum Zeitstempel
Daten, die wahre/falsche Werte enthalten BOOL

Parquet

PARQUET Athena (Arrow) (Athena (Pfeil))
BINARY VARCHAR
BOOLEAN BOOL
DOUBLE DOUBLE
ENUM VARCHAR
FIXED_LEN_BYTE_ARRAY DECIMAL
FLOAT FLOAT (32-Bit)
INT32
  1. INT32

  2. DATEDAY (wenn der logische Typ der Parquet-Spalte DATE ist)

INT64
  1. INT64

  2. TIMESTAMP (wenn der logische Typ der Parquet-Spalte TIMESTAMP ist)

INT96 Zeitstempel
MAP MAP
STRUCT STRUCT
LIST LIST

Erforderliche Berechtigungen

Ausführliche Informationen zu den für diesen Konnektor erforderlichen IAM-Richtlinien finden Sie im Policies-Abschnitt der athena-gcs.yaml-Datei. In der folgenden Liste sind die erforderlichen Berechtigungen zusammengefasst.

  • Amazon-S3-Schreibzugriff – Der Konnektor benötigt Schreibzugriff auf einen Speicherort in Amazon S3, um Ergebnisse aus großen Abfragen zu übertragen.

  • Athena GetQueryExecution — Der Konnektor verwendet diese Berechtigung, um einen Fast-Fail auszuführen, wenn die Upstream-Athena-Abfrage beendet wurde.

  • AWS Glue Data Catalog— Der GCS-Konnektor benötigt nur Lesezugriff auf den, um Schemainformationen abzurufen AWS Glue Data Catalog .

  • CloudWatch Logs — Der Connector benötigt Zugriff auf CloudWatch Logs, um Logs zu speichern.

Leistung

Wenn das Tabellenschema Partitionsfelder enthält und die partition.pattern-Tabelleneigenschaft richtig konfiguriert ist, können Sie das Partitionsfeld in die WHERE-Klausel Ihrer Abfragen aufnehmen. Für solche Abfragen verwendet der GCS-Konnektor die Partitionsspalten, um den GCS-Ordnerpfad zu verfeinern und das Scannen nicht benötigter Dateien in GCS-Ordnern zu vermeiden.

Bei Parquet-Datensätzen führt die Auswahl einer Teilmenge von Spalten dazu, dass weniger Daten gescannt werden. Dies führt in der Regel zu einer kürzeren Ausführungszeit der Abfrage, wenn die Spaltenprojektion angewendet wird.

Bei CSV-Datensätzen wird die Spaltenprojektion nicht unterstützt und reduziert nicht die Menge der gescannten Daten.

LIMIT-Klauseln reduzieren die Menge der gescannten Daten, aber wenn Sie kein Prädikat angeben, sollten Sie davon ausgehen, dass SELECT-Abfragen mit einer LIMIT-Klausel mindestens 16 MB Daten scannen. Der GCS-Konnektor scannt mehr Daten bei größeren Datensätzen als bei kleineren Datensätzen, unabhängig von der angewendeten LIMIT-Klausel. Zum Beispiel scannt die Abfrage SELECT * LIMIT 10000 mehr Daten bei einem größeren zugrunde liegenden Datensatz als bei einem kleineren.

Lizenzinformationen

Durch die Verwendung dieses Connectors erkennen Sie die Einbeziehung von Komponenten von Drittanbietern an. Eine Liste dieser Komponenten finden Sie in der Datei pom.xml für diesen Connector, und Sie stimmen den Bedingungen der jeweiligen Drittanbieterlizenzen zu, die in der Datei LICENSE.txt auf GitHub .com enthalten sind.

Weitere Ressourcen

Weitere Informationen zu diesem Connector finden Sie auf der entsprechenden Website auf GitHub .com.