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

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.

Dieser Connector kann bei Glue-Datenkatalog als Verbundkatalog registriert werden. Er unterstützt in Lake Formation definierte Datenzugriffskontrollen auf Katalog-, Datenbank-, Tabellen-, Spalten-, Zeilen- und Tagebene. Dieser Konnektor verwendet Glue Connections, um die Konfigurationseigenschaften in Glue zu zentralisieren.

Wenn Sie Lake Formation in Ihrem Konto aktiviert haben, muss die IAM-Rolle für Ihren Athena-Verbund-Lambda-Konnektor, den Sie im AWS Serverless Application Repository bereitstellen, in Lake Formation über Lesezugriff auf das AWS Glue Data Catalog verfügen.

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 Amazon Athena verwenden 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 Konnektor nur den VARCHAR-Typ für Partitionsspalten (string oder 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 Parameter in diesem Abschnitt, um den GCS-Konnektor zu konfigurieren.

Anmerkung

Athena-Datenquellenkonnektoren, die am 3. Dezember 2024 und später erstellt wurden, verwenden AWS Glue-Verbindungen.

Die unten aufgeführten Parameternamen und Definitionen beziehen sich auf Athena-Datenquellen-Connectors, die vor dem 3. Dezember 2024 erstellt wurden. Diese können von ihren entsprechenden AWS Glue-Verbindungseigenschaften abweichen. Verwenden Sie ab dem 3. Dezember 2024 die folgenden Parameter nur, wenn Sie eine frühere Version eines Athena-Datenquellen-Connectors manuell bereitstellen.

Wir empfehlen, dass Sie einen GCS-Connector mithilfe eines Glue-Connections-Objekts konfigurieren. Setzen Sie dazu die glue_connection-Umgebungsvariable des GCS-Konnektors Lambda auf den Namen der zu verwendenden Glue-Connection.

Eigenschaften von Glue Connections

Verwenden Sie den folgenden Befehl, um das Schema für ein Glue-Connection-Objekt zu erhalten. Dieses Schema enthält alle Parameter, mit denen Sie Ihre Verbindung steuern können.

aws glue describe-connection-type --connection-type GOOGLECLOUDSTORAGE

Lambda-Umgebungseigenschaften

  • glue_connection – Gibt den Namen der Glue-Connection an, die dem Verbund-Connector zugeordnet ist.

Anmerkung
  • Alle Konnektoren, die Glue Connections verwenden, müssen AWS Secrets Manager zum Speichern von Anmeldeinformationen verwenden.

  • Der mit Glue-Connection erstellte GCS-Connector unterstützt die Verwendung eines Multiplexing-Handlers nicht.

  • Der mit Glue-Verbindungen erstellte GCS-Konnektor unterstützt nur ConnectionSchemaVersion 2.

  • 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"}). Andere mögliche Header finden Sie unter PutObject in der API-Referenz zu Amazon Simple Storage Service.

  • 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 Secrets in AWS Secrets Manager, das Ihre GCS-Anmeldeinformationen im JSON-Format enthält (z. B. GoogleCloudPlatformCredentials).

Einrichten von Datenbanken und Tabellen in AWS Glue

Da die integrierte Schema-Inferenzfunktion des GCS-Konnektors begrenzt ist, empfehlen wir Ihnen, AWS Glue für Ihre Metadaten zu verwenden. Die folgenden Verfahren zeigen, wie Sie eine Datenbank und Tabelle in AWS Glue erstellen, 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-Konnektor zu erstellen.

So erstellen Sie eine Datenbank in AWS Glue
  1. Melden Sie sich bei der AWS-Managementkonsole an 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 als Standort google-cloud-storage-flag an. Dieser Standort 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-Konnektor erstellen, müssen Sie zusätzliche Metadaten angeben.

So erstellen Sie eine Tabelle in der AWS Glue-Konsole
  1. Wählen Sie im Navigationsbereich der AWS Glue-Konsole Tables (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 Next.

  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.

Definition eines Tabellenschemas in AWS Glue

Das Definieren eines Tabellenschemas in AWS Glue erfordert mehr Schritte, gibt Ihnen aber 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.

So fügen Sie Partitionsinformationen zu Tabelleneigenschaften AWS Glue hinzu
  1. Wählen Sie auf der Detailseite für die Tabelle, die Sie in AWS Glue erstellt haben, Actions (Aktionen), Edit table (Tabelle bearbeiten).

  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 Tabelle, die Sie in AWS Glue erstellt haben, 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 ein Fast-Fail durchzuführen, wenn die vorgeschaltete Athena-Abfrage beendet wurde.

  • AWS Glue Data Catalog – Der GCS-Konnektor benötigt schreibgeschützten Zugriff auf AWS Glue Data Catalog, um Schemainformationen abzurufen.

  • CloudWatch Logs – Der Konnektor benötigt Zugriff auf CloudWatch Logs zum Speichern von Protokollen.

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 Konnektors erkennen Sie die Aufnahme von Komponenten von Drittanbietern an. Eine Liste dieser Komponenten finden Sie in der pom.xml-Datei für diesen Konnektor. Zudem stimmen Sie den Bedingungen der jeweiligen Drittanbieterlizenzen zu, die in der LICENSE.txt-Datei auf GitHub.com aufgeführt werden.

Weitere Ressourcen

Weitere Informationen zu diesem Konnektor finden Sie unter der entsprechenden Seite auf GitHub.com.