Amazon Athena Cloudera Hive 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 Cloudera Hive Konnektor

Der Amazon Athena-Konnektor für Cloudera Hive ermöglicht es Athena, SQL-Abfragen auf der Hadoop-Verteilung von Cloudera Hive auszuführen. Der Connector wandelt Ihre Athena-SQL-Abfragen in ihre äquivalente HiveQL-Syntax um.

Dieser Konnektor verwendet keine Glue-Verbindungen, um die Konfigurationseigenschaften in Glue zu zentralisieren. Die Verbindungskonfiguration erfolgt über Lambda.

Voraussetzungen

Einschränkungen

  • Schreiboperationen wie DDL werden nicht unterstützt.

  • In einem Multiplexer-Setup werden der Überlauf-Bucket und das Präfix von allen Datenbank-Instances gemeinsam genutzt.

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

Bedingungen

Die folgenden Begriffe beziehen sich auf den Cloudera-Hive-Konnektor.

  • Datenbank-Instance — Jede Instance einer Datenbank, die vor Ort, auf Amazon EC2 oder auf Amazon RDS bereitgestellt wird.

  • Handler – Ein Lambda-Handler, der auf Ihre Datenbank-Instance zugreift. Ein Handler kann für Metadaten oder für Datensätze verwendet werden.

  • Metadaten-Handler – Ein Lambda-Handler, der Metadaten von Ihrer Datenbank-Instance abruft.

  • Record Handler – Ein Lambda-Handler, der Datensätze aus Ihrer Datenbank-Instance abruft.

  • Composite Handler – Ein Lambda-Handler, der sowohl Metadaten als auch Datensätze aus Ihrer Datenbank-Instance abruft.

  • Eigenschaft oder Parameter – Eine Datenbankeigenschaft, die von Handlern zum Extrahieren von Datenbankinformationen verwendet wird. Sie konfigurieren diese Eigenschaften als Lambda-Umgebungsvariablen.

  • Verbindungszeichenfolge – Eine Textzeichenfolge, die verwendet wird, um eine Verbindung zu einer Datenbank-Instance herzustellen.

  • Katalog — Ein nicht bei Athena registrierter AWS Glue Katalog, der ein erforderliches Präfix für die connection_string Immobilie ist.

  • Multiplex-Handler – Ein Lambda-Handler, der mehrere Datenbankverbindungen akzeptieren und verwenden kann.

Parameter

Verwenden Sie die Parameter in diesem Abschnitt, um den Cloudera Hive-Connector zu konfigurieren.

Wir empfehlen, dass Sie einen Cloudera Hive-Connector mithilfe eines Glue-Verbindungsobjekts konfigurieren. Setzen Sie dazu die glue_connection Umgebungsvariable des Cloudera Hive-Connectors Lambda auf den Namen der zu verwendenden Glue-Verbindung.

Eigenschaften von Klebeverbindungen

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

aws glue describe-connection-type --connection-type CLOUDERAHIVE

Eigenschaften der Lambda-Umgebung

  • glue_connection — Gibt den Namen der Glue-Verbindung an, die dem Verbundstecker zugeordnet ist.

  • casing_mode — (Optional) Gibt an, wie bei Schema- und Tabellennamen die Groß- und Kleinschreibung behandelt werden soll. Der casing_mode Parameter verwendet die folgenden Werte, um das Verhalten der Groß- und Kleinschreibung zu spezifizieren:

    • none — Die Groß-/Kleinschreibung der angegebenen Schema- und Tabellennamen wird nicht geändert. Dies ist die Standardeinstellung für Stecker, denen eine Klebeverbindung zugeordnet ist.

    • groß — Alle angegebenen Schema- und Tabellennamen werden in Großbuchstaben geschrieben.

    • lower — Kleinschreibung aller angegebenen Schema- und Tabellennamen.

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

  • Der mit Glue-Verbindungen erstellte Cloudera Hive-Connector unterstützt die Verwendung eines Multiplexing-Handlers nicht.

  • Der mit Glue-Verbindungen erstellte Cloudera Hive-Connector unterstützt nur 2. ConnectionSchemaVersion

Verbindungszeichenfolge

Verwenden Sie eine JDBC-Verbindungszeichenfolge im folgenden Format, um eine Verbindung zu einer Datenbank-Instance herzustellen.

hive://${jdbc_connection_string}

Verwenden eines Multiplexing-Handlers

Sie können einen Multiplexer verwenden, um mit einer einzigen Lambda-Funktion eine Verbindung zu mehreren Datenbank-Instances herzustellen. Anfragen werden anhand des Katalognamens weitergeleitet. Verwenden Sie die folgenden Klassen in Lambda.

Handler Klasse
Composite Handler HiveMuxCompositeHandler
Metadaten-Handler HiveMuxMetadataHandler
Record Handler HiveMuxRecordHandler
Multiplex-Handler-Parameter
Parameter Beschreibung
$catalog_connection_string Erforderlich Eine Verbindungszeichenfolge einer Datenbank-Instance. Stellen Sie der Umgebungsvariablen den Namen des in Athena verwendeten Katalogs voran. Wenn zum Beispiel der bei Athena registrierte Katalog myhivecatalog ist, dann lautet der Name der Umgebungsvariablen myhivecatalog_connection_string.
default Erforderlich Die standardmäßige Verbindungszeichenfolge. Diese Zeichenfolge wird verwendet, wenn der Katalog verwendet wird lambda:${ AWS_LAMBDA_FUNCTION_NAME}.

Die folgenden Beispieleigenschaften gelten für eine Hive MUX Lambda-Funktion, die zwei Datenbankinstanzen unterstützt: hive1 (die Standardeinstellung) und hive2.

Eigenschaft Wert
default hive://jdbc:hive2://hive1:10000/default;${Test/RDS/hive1}
hive2_catalog1_connection_string hive://jdbc:hive2://hive1:10000/default;${Test/RDS/hive1}
hive2_catalog2_connection_string hive://jdbc:hive2://hive2:10000/default;UID=sample&PWD=sample
Bereitstellen von Anmeldeinformationen

Um einen Benutzernamen und ein Passwort für Ihre Datenbank in Ihrer JDBC-Verbindungszeichenfolge anzugeben, benötigt der Cloudera Hive-Connector ein Geheimnis von. AWS Secrets Manager Um die Athena Federated Query-Funktion verwenden zu können AWS Secrets Manager, muss die mit Ihrer Lambda-Funktion verbundene VPC über Internetzugang oder einen VPC-Endpunkt verfügen, um eine Verbindung zu Secrets Manager herzustellen.

Geben Sie den Namen eines Geheimnisses in AWS Secrets Manager Ihre JDBC-Verbindungszeichenfolge ein. Der Konnektor ersetzt den geheimen Namen durch username- und password-Werte von Secrets Manager.

Beispiel einer Verbindungszeichenfolge mit einem geheimen Namen

Die folgende Zeichenfolge hat den geheimen Namen ${Test/RDS/hive1}.

hive://jdbc:hive2://hive1:10000/default;...&${Test/RDS/hive1}&...

Der Konnektor verwendet den geheimen Namen, um Secrets abzurufen und den Benutzernamen und das Kennwort bereitzustellen, wie im folgenden Beispiel gezeigt.

hive://jdbc:hive2://hive1:10000/default;...&UID=sample2&PWD=sample2&...

Derzeit erkennt der Cloudera-Hive-Konnektor die JDBC-Eigenschaften UID und PWD.

Verwenden eines einzelnen Verbindungs-Handlers

Sie können die folgenden Einzelverbindungsmetadaten und Record Handler verwenden, um eine Verbindung zu einer einzelnen Cloudera Hive-Instance herzustellen.

Handler-Typ Klasse
Composite Handler HiveCompositeHandler
Metadaten-Handler HiveMetadataHandler
Record Handler HiveRecordHandler
Parameter für Einzelverbindungs-Handler
Parameter Beschreibung
default Erforderlich Die standardmäßige Verbindungszeichenfolge.

Die Einzelverbindungs-Handler unterstützen eine Datenbank-Instance und müssen einen default-Verbindungszeichenfolgenparameter bereitstellen. Alle anderen Verbindungszeichenfolgen werden ignoriert.

Die folgende Beispieleigenschaft gilt für eine einzelne Cloudera Hive-Instance, die von einer Lambda-Funktion unterstützt wird.

Eigenschaft Wert
default hive://jdbc:hive2://hive1:10000/default;secret=${Test/RDS/hive1}

Überlauf-Parameter

Das Lambda-SDK kann Daten an Amazon S3 übertragen. Alle Datenbank-Instances, auf die mit derselben Lambda-Funktion zugegriffen wird, werden an denselben Speicherort verschoben.

Parameter Beschreibung
spill_bucket Erforderlich Überlauf-Bucket-Name.
spill_prefix Erforderlich Schlüssel-Prefix für den Überlauf-Bucket.
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.

Datentypunterstützung

Die folgende Tabelle enthält die entsprechenden Datentypen für JDBC, Cloudera Hive und Arrow.

JDBC Cloudera Hive Arrow
Boolesch Boolesch Bit
Ganzzahl TINYINT Tiny
Short SMALLINT Smallint
Ganzzahl INT Int
Long BIGINT Bigint
float float4 Float4
Double float8 Float8
Datum date DateDay
Zeitstempel Zeitstempel DateMilli
String VARCHAR Varchar
Bytes bytes Varbinary
BigDecimal Dezimal Dezimal
ARRAY N.z. (siehe Hinweis) Auflisten
Anmerkung

Derzeit unterstützt Cloudera Hive nicht die Aggregattypen ARRAY, MAP, STRUCT oder UNIONTYPE. Spalten mit Aggregattypen werden als VARCHAR-Spalten in SQL behandelt.

Partitionen und Splits

Partitionen werden verwendet, um zu bestimmen, wie Splits für den Konnektor generiert werden. Athena konstruiert eine synthetische Säule vom Typ varchar, die das Partitionierungsschema für die Tabelle darstellt, das dem Konnektor beim Generieren von Splits hilft. Der Konnektor ändert nicht die eigentliche Tabellendefinition.

Leistung

Cloudera Hive unterstützt statische Partitionen. Der Athena-Cloudera-Hive-Konnektor kann Daten von diesen Partitionen parallel abrufen. Wenn Sie sehr große Datenmengen mit einheitlicher Partitionsverteilung abfragen möchten, wird eine statische Partitionierung dringend empfohlen. Der Cloudera Hive-Konnektor ist aufgrund der Gleichzeitigkeit widerstandsfähig gegenüber Drosselung.

Der Athena-Cloudera-Hive-Konnektor führt einen Prädikat-Pushdown durch, um die von der Abfrage gescannten Daten zu verringern. LIMIT-Klauseln, einfache Prädikate und komplexe Ausdrücke werden an den Konnektor weitergegeben, um die Menge der gescannten Daten und die Laufzeit der Abfrage zu verringern.

LIMIT-Klauseln

Eine LIMIT N-Anweisung reduziert die von der Abfrage durchsuchten Daten. Mit LIMIT N-Pushdown gibt der Konnektor nur N Zeilen an Athena zurück.

Prädikate

Ein Prädikat ist ein Ausdruck in der WHERE-Klausel einer SQL-Abfrage, der einen booleschen Wert ergibt und Zeilen auf der Grundlage mehrerer Bedingungen filtert. Der Athena-Cloudera-Hive-Konnektor kann diese Ausdrücke kombinieren und sie direkt an Cloudera Hive weiterleiten, um die Funktionalität zu verbessern und die Menge der gescannten Daten zu reduzieren.

Die folgenden Operatoren des Athena-Cloudera-Hive-Konnektors unterstützen Prädikat-Pushdown:

  • Boolean: UND, ODER, NICHT

  • Gleichheit: GLEICH, NICHT GLEICH, WENIGER_ALS, WENIGER_ODER_GLEICH, GRÖSSER_ALS, GRÖSSER_ODER_GLEICH, IST_NULL

  • Arithmetik: ADDIEREN, SUBTRAHIEREN, MULTIPLIZIEREN, DIVIDIEREN, MODULIEREN, NEGIEREN

  • Andere: WIE_MUSTER, IN

Beispiel für einen kombinierten Pushdown

Kombinieren Sie für erweiterte Abfragefunktionen die Pushdown-Typen wie im folgenden Beispiel:

SELECT * FROM my_table WHERE col_a > 10 AND ((col_a + col_b) > (col_c % col_d)) AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') LIMIT 10;

Passthrough-Abfragen

Der Cloudera Hive-Connector unterstützt Passthrough-Abfragen. Passthrough-Abfragen verwenden eine Tabellenfunktion, um Ihre vollständige Abfrage zur Ausführung an die Datenquelle weiterzuleiten.

Um Passthrough-Abfragen mit Cloudera Hive zu verwenden, können Sie die folgende Syntax verwenden:

SELECT * FROM TABLE( system.query( query => 'query string' ))

Mit der folgenden Beispielabfrage wird eine Abfrage an eine Datenquelle in Cloudera Hive weitergeleitet. Die Abfrage wählt alle Spalten in der customer Tabelle aus und begrenzt die Ergebnisse auf 10.

SELECT * FROM TABLE( system.query( query => 'SELECT * FROM customer LIMIT 10' ))

Lizenzinformationen

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

Weitere Ressourcen

Die neuesten Informationen zur JDBC-Treiberversion finden Sie in der Datei pom.xml für den Cloudera Hive-Connector auf .com. GitHub

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