View a markdown version of this page

Amazon Athena HBase Konnektor - 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.

Amazon Athena HBase Konnektor

Der Amazon-Athena-HBase-Konnektor ermöglicht Amazon Athena die Kommunikation mit Ihren Apache-HBase-Instances, sodass Sie Ihre HBase-Daten mit SQL abfragen können.

Im Gegensatz zu herkömmlichen relationalen Datenspeichern haben HBase-Sammlungen kein festgelegtes Schema. HBase hat keinen Metadatenspeicher. Jeder Eintrag in eine HBase-Sammlung kann unterschiedliche Felder und Datentypen haben.

Der HBase-Konnektor unterstützt zwei Mechanismen zum Generieren von Tabellenschemainformationen: grundlegende Schemainferenz und AWS Glue Data Catalog Metadaten.

Die Schemainferenz ist die Standardeinstellung. Mit dieser Option werden eine kleine Anzahl von Dokumenten in Ihrer Sammlung gescannt, eine Vereinigung aller Felder gebildet und Felder mit nicht überlappenden Datentypen erwzungen. Diese Option eignet sich gut für Sammlungen, die größtenteils einheitliche Einträge haben.

Für Sammlungen mit einer größeren Vielfalt an Datentypen unterstützt der Konnektor das Abrufen von Metadaten aus dem AWS Glue Data Catalog. Wenn der Connector eine AWS Glue Datenbank und eine Tabelle erkennt, die Ihren HBase-Namespace- und Sammlungsnamen entsprechen, bezieht er seine Schemainformationen aus der entsprechenden Tabelle. AWS Glue Wenn Sie Ihre AWS Glue Tabelle erstellen, empfehlen wir, dass Sie sie zu einer Obermenge aller Felder machen, auf die Sie möglicherweise von Ihrer HBase-Sammlung aus zugreifen möchten.

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

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.

Voraussetzungen

Parameters

Verwenden Sie die Parameter in diesem Abschnitt, um den HBase-Konnektor zu konfigurieren.

Anmerkung

Athena-Datenquellenconnectors, 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 HBase-Connector mithilfe eines Glue-Connections-Objekts konfigurieren. Setzen Sie dazu die glue_connection-Umgebungsvariable des HBase-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 HBASE

Lambda-Umgebungseigenschaften

Die folgenden Lambda-Umgebungseigenschaften gelten nur, wenn Sie den Connector mit einer Lambda-Funktion in Ihrem Konto verwenden.

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

Anmerkung
  • Alle Connectoren, die eine AWS Glue Data Catalog Verbundverbindung verwenden, müssen diese AWS Secrets Manager zum Speichern von Anmeldeinformationen verwenden.

  • Der mit einer AWS Glue Data Catalog Verbundverbindung erstellte HBase-Connector unterstützt die Verwendung eines Multiplexing-Handlers nicht.

  • Der HBase-Connector, der mit einer AWS Glue Data Catalog Verbundverbindung erstellt wurde, unterstützt nur 2. ConnectionSchemaVersion

  • 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 auf Amazon S3 übertragen 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 dass Daten, die auf S3 übertragen werden, entweder mit einem zufällig generierten Schlüssel oder mit KMS zur AES-GCM Schlüsselgenerierung verschlüsselt werden. Das Deaktivieren der Überlauf-Verschlüsselung kann die Leistung verbessern, insbesondere wenn Ihr Überlauf-Standort eine serverseitige Verschlüsselung verwendet.

  • disable_glue — (Optional) Falls vorhanden und auf true gesetzt, versucht der Connector nicht, zusätzliche Metadaten von abzurufen. AWS Glue

  • glue_catalog – (Optional) Verwenden Sie diese Option, um einen kontoübergreifenden AWS Glue -Katalog anzugeben. Standardmäßig versucht der Connector, Metadaten von seinem eigenen Konto abzurufen. AWS Glue

  • default_base – Gibt, falls vorhanden, eine HBase-Verbindungszeichenfolge an, die verwendet werden soll, wenn keine katalogspezifische Umgebungsvariable vorhanden ist.

  • enable_case_insensitive_match – (Optional) Wenn true, führt Suchen in Tabellennamen in HBase ohne Berücksichtigung der Groß- und Kleinschreibung durch. Der Standardwert ist false. Verwenden Sie dies, wenn Ihre Abfrage Tabellennamen in Großbuchstaben enthält.

Angeben von Verbindungszeichenfolgen

Sie können eine oder mehrere Eigenschaften angeben, die die HBase-Verbindungsdetails für die HBase-Instances definieren, die Sie mit dem Konnektor verwenden. Legen Sie dazu eine Lambda-Umgebungsvariable fest, die dem Katalognamen entspricht, den Sie in Athena verwenden möchten. Angenommen, Sie möchten die folgenden Abfragen verwenden, um zwei verschiedene HBase-Instances von Athena abzufragen:

SELECT * FROM "hbase_instance_1".database.table
SELECT * FROM "hbase_instance_2".database.table

Bevor Sie diese beiden SQL-Anweisungen verwenden können, müssen Sie Ihrer Lambda-Funktion zwei Umgebungsvariablen hinzufügen: hbase_instance_1 und hbase_instance_2. Der Wert für jede Verbindung sollte eine HBase-Verbindungszeichenfolge mit folgendem Format sein:

master_hostname:hbase_port:zookeeper_port
Verwendung von Secrets

Sie können den Wert optional AWS Secrets Manager für einen Teil oder den gesamten Wert für Ihre Verbindungszeichenfolgendetails verwenden. Um das Athena-Federated-Query-Feature mit Secrets Manager zu verwenden, sollte die mit Ihrer Lamba-Funktion verbundene VPC über einen Internetzugang oder einen VPC-Endpunkt verfügen, um eine Verbindung zu Secrets Manager herzustellen.

Wenn Sie die Syntax ${my_secret} verwenden, um den Namen eines Secrets aus Secrets Manager in Ihre Verbindungszeichenfolge einzufügen, ersetzt der Konnektor den geheimen Namen durch Ihren Benutzernamen und die Kennwortwerte aus Secrets Manager.

Angenommen, Sie setzen die Lambda-Umgebungsvariable für hbase_instance_1 auf den folgenden Wert:

${hbase_host_1}:${hbase_master_port_1}:${hbase_zookeeper_port_1}

Das Athena Query Federation SDK versucht automatisch, ein Secret mit dem Namen hbase_instance_1_creds vom Secrets Manager abzurufen und setzt diesen Wert anstelle von ${hbase_instance_1_creds}. Ein beliebiger Teil der Verbindungszeichenfolge, der in der ${ }-Zeichenkombination enthalten ist, wird als Secret aus Secrets Manager interpretiert. Wenn Sie einen geheimen Namen angeben, den der Konnektor in Secrets Manager nicht finden kann, ersetzt der Konnektor den Text nicht.

Einrichten von Datenbanken und Tabellen in AWS Glue

Die integrierte Schemainferenz des Konnektors unterstützt nur Werte, die in HBase als Strings serialisiert sind (z. B. String.valueOf(int)). Da die integrierten Schemainferenzfunktionen des Konnektors begrenzt sind, sollten Sie stattdessen AWS Glue für Metadaten verwenden. Um eine AWS Glue Tabelle für die Verwendung mit HBase zu aktivieren, benötigen Sie eine AWS Glue Datenbank und eine Tabelle mit Namen, die dem HBase-Namespace und der Tabelle entsprechen, für die Sie zusätzliche Metadaten bereitstellen möchten. Die Verwendung der Namenskonventionen für HBase-Spaltenfamilien ist optional, aber nicht erforderlich.

Um eine zu verwenden AWS Glue Tabelle für ergänzende Metadaten
  1. Wenn Sie die Tabelle und die Datenbank in der AWS Glue Konsole bearbeiten, fügen Sie die folgenden Tabelleneigenschaften hinzu:

    • hbase-metadata-flag – Diese Eigenschaft gibt dem HBase-Konnektor an, dass der Konnektor die Tabelle für ergänzende Metadaten verwenden kann. Sie können einen beliebigen Wert für hbase-metadata-flag angeben, solange die hbase-metadata-flag-Eigenschaft in der Liste der Tabelleneigenschaften vorhanden ist.

    • hbase-native-storage-flag – Verwenden Sie dieses Flag, um die beiden vom Konnektor unterstützten Wertserialisierungsmodi umzuschalten. Wenn dieses Feld nicht vorhanden ist, geht der Konnektor standardmäßig davon aus, dass alle Werte in HBase als Zeichenfolge gespeichert sind. Daher wird er versuchen, Datentypen wie INT, BIGINT und DOUBLE von HBase als Zeichenfolgen zu analysieren. Wenn in diesem Feld ein Wert in der Tabelle angegeben ist AWS Glue, wechselt der Konnektor in den „systemeigenen“ Speichermodus und versuchtINT,,BIGINT, und DOUBLE als Byte zu lesenBIT, indem er die folgenden Funktionen verwendet:

      ByteBuffer.wrap(value).getInt() ByteBuffer.wrap(value).getLong() ByteBuffer.wrap(value).get() ByteBuffer.wrap(value).getDouble()
  2. Stellen Sie sicher, dass Sie die in diesem Dokument aufgeführten Datentypen verwenden, die für AWS Glue geeignet sind.

Modellieren von Spaltenfamilien

Der Athena-HBase-Konnektor unterstützt zwei Möglichkeiten zur Modellierung von HBase-Spaltenfamilien: vollqualifizierte (abgeflachte) Benennung wie family:column oder die Verwendung von STRUCT-Objekten.

Im STRUCT-Model sollte der Name des STRUCT-Feldes mit der Spaltenfamilie übereinstimmen und die untergeordneten Elementen von STRUCT sollten mit den Namen der Spalten der Familie übereinstimmen. Da Prädikat-Push-Down- und Columnar-Lesevorgänge jedoch für komplexe Typen wie STRUCT noch nicht vollständig unterstützt werden, wird die Verwendung von STRUCT derzeit nicht empfohlen.

Die folgende Abbildung zeigt eine konfigurierte Tabelle AWS Glue , in der eine Kombination der beiden Ansätze verwendet wird.

Modellieren von Spaltenfamilien AWS Glue für Apache Hbase.

Datentypunterstützung

Der Konnektor ruft alle HBase-Werte als Basis-Byte-Typ ab. Anschließend werden die Werte, je nachdem, wie Sie Ihre Tabellen im AWS Glue Datenkatalog definiert haben, einem der Apache Arrow-Datentypen in der folgenden Tabelle zugeordnet.

AWS Glue Datentyp Apache Arrow-Datentyp
int INT
bigint BIGINT
double FLOAT8
float FLOAT4
boolesch BIT
Binary VARBINARY
Zeichenfolge VARCHAR
Anmerkung

Wenn Sie Ihre Metadaten nicht ergänzen, verwendet die Schemainferenz des Connectors nur die Datentypen BIGINTFLOAT8, undVARCHAR. AWS Glue

Erforderliche Berechtigungen

Ausführliche Informationen zu den für diesen Konnektor erforderlichen IAM-Richtlinien finden Sie im Policies-Abschnitt der athena-hbase.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 HBase-Connector 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.

  • AWS Secrets Manager Lesezugriff — Wenn Sie HBase-Endpunktdetails in Secrets Manager speichern möchten, müssen Sie dem Connector Zugriff auf diese Geheimnisse gewähren.

  • Zugriff auf VPC – Der Konnektor erfordert die Fähigkeit, Schnittstellen an Ihre VPC anzuhängen und zu trennen, damit diese eine Verbindung zu dieser herstellen und mit Ihren HBase-Instances kommunizieren kann.

Leistung

Der Athena-HBase-Konnektor versucht, Abfragen für Ihre HBase-Instance zu parallelisieren, indem er jeden Regionsserver parallel liest. Der Athena-HBase-Konnektor führt einen Prädikat-Pushdown durch, um die von der Abfrage durchsuchten Daten zu reduzieren.

Die Lambda-Funktion führt auch Projektions-Pushdown durch, um die von der Abfrage gescannten Daten zu reduzieren. Die Auswahl einer Teilmenge von Spalten führt jedoch manchmal zu einer längeren Laufzeit der Abfrageausführung. 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 an Daten scannen.

HBase ist anfällig für Abfragefehler und schwankende Abfrageausführungszeiten. Möglicherweise müssen Sie Ihre Abfragen mehrmals wiederholen, damit diese erfolgreich sind. Der HBase-Konnektor ist aufgrund der Gleichzeitigkeit widerstandsfähig gegenüber Drosselung.

Pass-Through-Abfragen

Der HBase-Connector unterstützt Pass-Through-Abfragen und basiert auf NoSQL. Informationen zur Abfrage von Apache HBase mithilfe von Filtern finden Sie in der Apache-Dokumentation unter Filtersprache.

Verwenden Sie die folgende Syntax, um Pass-Through-Abfragen mit HBase zu verwenden:

SELECT * FROM TABLE( system.query( database => 'database_name', collection => 'collection_name', filter => '{query_syntax}' ))

Das folgende Beispiel für eine HBase-Passthrough-Abfrage filtert innerhalb der employee-Sammlung der default-Datenbank nach Mitarbeitern im Alter von 24 oder 30 Jahren.

SELECT * FROM TABLE( system.query( DATABASE => 'default', COLLECTION => 'employee', FILTER => 'SingleColumnValueFilter(''personaldata'', ''age'', =, ''binary:30'')' || ' OR SingleColumnValueFilter(''personaldata'', ''age'', =, ''binary:24'')' ))

Lizenzinformationen

Das Amazon Athena HBase Connector-Projekt ist unter der Apache-2.0 Lizenz lizenziert.

Weitere Ressourcen

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