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 Amazon Athena Google Cloud Storage-Connector 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 ein oder mehrere Parquet oder CSV Dateien in einem unpartitionierten oder partitionierten Ordner in einem GCS Bucket gruppiert haben, können Sie sie in einem AWS GlueDatenbanktabelle.

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

Einen Artikel, der zeigt, wie Sie Athena verwenden, um Abfragen auf Parquet oder CSV Dateien in einem GCS Bucket auszuführen, finden Sie im AWS Big-Data-Blogbeitrag Verwenden Sie Amazon Athena, um auf der Google Cloud Platform gespeicherte Daten abzufragen.

Voraussetzungen

Einschränkungen

  • DDLSchreibvorgänge werden nicht unterstützt.

  • Alle relevanten Lambda-Grenzwerte. Weitere Informationen finden Sie unter Lambda-Kontingente im AWS Lambda Leitfaden für Entwickler.

  • Derzeit unterstützt der Konnektor nur den VARCHAR Typ für Partitionsspalten (stringoder varchar in 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 aus Ihrem GCS Bucket abruft.

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

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

Unterstützte Dateitypen

Der GCS Connector unterstützt die Typen Parquet und CSV Dateien.

Anmerkung

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

Parameter

Verwenden Sie die Lambda-Umgebungsvariablen in diesem Abschnitt, um den GCS Konnektor zu konfigurieren.

  • 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 kodierte Zuordnung von Anforderungsheadern und Werten für die Amazon S3 putObject S3-Anfrage, die zum Verschicken verwendet wird (z. B.). {"x-amz-server-side-encryption" : "AES256"} Weitere mögliche Header finden Sie PutObjectin der Amazon Simple Storage Service API Reference.

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

  • disable_spill_encryption – (Optional) Bei Einstellung auf True, wird die Spill-Verschlüsselung deaktiviert. Die Standardeinstellung ist False so, dass Daten, die auf S3 übertragen werden, mit AES - verschlüsselt werden GCM — entweder mit einem zufällig generierten Schlüssel oder KMS zur Generierung 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 in AWS Secrets Manager das Ihre Anmeldeinformationen im Format enthält (z. B.). GCS JSON GoogleCloudPlatformCredentials

Einrichten von Datenbanken und Tabellen in AWS Glue

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

Erstellen einer Datenbank in AWS Glue

Sie können das AWS Glue Konsole zum Erstellen einer Datenbank zur Verwendung mit dem GCS Connector.

Um eine Datenbank zu erstellen in AWS Glue
  1. Melden Sie sich an bei AWS Management Console und öffne das AWS Glue Konsole bei 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 Connector verwenden möchten.

  5. Geben Sie als Standort angoogle-cloud-storage-flag. Diese Position teilt dem GCS Connector mit, dass AWS Glue Die Datenbank enthält Tabellen für GCS Daten, 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 erstellen AWS Glue Für die Tabelle, die mit dem GCS Konnektor verwendet werden soll, müssen Sie zusätzliche Metadaten angeben.

Um eine Tabelle in der zu erstellen AWS Glue Konsole
  1. Im AWS Glue Wählen Sie in der 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 AWS Glue Datenbank, die Sie für den GCS Connector erstellt haben.

    • Pfad einschließen — Geben Sie im Abschnitt Datenspeicher für Pfad einschließen den URI Speicherort für ein GCS Präfix von gs:// (z. B.gs://gcs_table/data/) ein. Wenn Sie über einen oder mehrere Partitionsordner verfügen, nehmen Sie diese nicht in den Pfad auf.

      Anmerkung

      Wenn Sie den Pfad eingeben, der kein s3:// Tabellenpfad ist, AWS Glue Die Konsole zeigt einen Fehler an. Sie können diesen Fehler ignorieren. Die Tabelle wird erfolgreich erstellt.

    • Datenformat — Wählen Sie für Klassifikation CSVoder Parquet aus.

  4. Wählen Sie Weiter.

  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 Weiter und dann Erstellen aus.

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

Definieren Sie ein Tabellenschema in AWS Glue

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

Um ein Schema für Ihre Tabelle zu definieren 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, folgen Sie den Schritten im nächsten Abschnitt, um den Eigenschaften der Tabelle unter ein Partitionsmuster hinzuzufügen AWS Glue.

Hinzufügen eines Partitionsmusters zu Tabelleneigenschaften in AWS Glue

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

Um Partitionsinformationen zu den Tabelleneigenschaften hinzuzufügen AWS Glue
  1. Auf der Detailseite für die Tabelle, die Sie erstellt haben AWS Glue, wählen Sie 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 Connector unterstützt sowohl Hive- als auch Nicht-Hive-Partitionsschemata.

  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, 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 für 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 den Wert hatDATE)

INT64
  1. INT64

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

INT96 Zeitstempel
MAP MAP
STRUCT STRUCT
LIST LIST

Erforderliche Berechtigungen

Vollständige Informationen zu den IAM Richtlinien, die für diesen Connector erforderlich sind, finden Sie im Policies Abschnitt der Datei athena-gcs.yaml. 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 AWS Glue Data Catalog um Schemainformationen zu erhalten.

  • 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 Connector die Partitionsspalten, um den GCS Ordnerpfad zu verfeinern und zu verhindern, dass nicht benötigte Dateien in GCS Ordnern gescannt werden.

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 die Menge der gescannten Daten wird dadurch nicht reduziert.

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 unabhängig von der angewendeten Klausel mehr Daten für größere Datensätze als für kleinere Datensätze. LIMIT 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 bestätigen Sie, dass Komponenten von Drittanbietern enthalten sind. 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 LICENSE.txt-Datei auf .com bereitgestellt werden. GitHub

Weitere Ressourcen

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