Amazon Athena SAP HANA Konnektor - Amazon Athena

Amazon Athena SAP HANA Konnektor

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

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.

  • In SAP HANA werden Objektnamen in Großbuchstaben konvertiert, wenn sie in der SAP-HANA-Datenbank gespeichert werden. Da bei Namen in Anführungszeichen jedoch zwischen Groß- und Kleinschreibung unterschieden wird, ist es möglich, dass zwei Tabellen denselben Namen in Klein- und Großbuchstaben haben (z. B. EMPLOYEE und employee).

    In Athena Federated Query werden Schematabellennamen für die Lambda-Funktion in Kleinbuchstaben bereitgestellt. Um dieses Problem zu umgehen, können Sie @schemaCase-Abfragehinweise zum Abrufen der Daten aus Tabellen bereitstellen, bei deren Namen zwischen Groß- und Kleinschreibung unterscheiden wird. Im Folgenden finden Sie zwei Beispielabfragen mit Abfragehinweisen.

    SELECT * FROM "lambda:saphanaconnector".SYSTEM."MY_TABLE@schemaCase=upper&tableCase=upper"
    SELECT * FROM "lambda:saphanaconnector".SYSTEM."MY_TABLE@schemaCase=upper&tableCase=lower"

Bedingungen

Die folgenden Begriffe beziehen sich auf den SAP-HANA-Konnektor.

  • Datenbank-Instance – Jede Instance einer Datenbank, die On-Premises, in 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-AWS Glue-Katalog, der bei Athena registriert ist und ein erforderliches Präfix für die connection_string-Eigenschaft darstellt.

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

Parameter

Verwenden Sie die Parameter in diesem Abschnitt, um den SAP-HANA-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 SAP-HANA-Connector mithilfe eines Glue-Connections-Objekts konfigurieren. Setzen Sie dazu die glue_connection-Umgebungsvariable des SAP-HANA-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 SAPHANA

Lambda-Umgebungseigenschaften

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

  • casing_mode – (Optional) Gibt an, wie bei Schema- und Tabellennamen die Groß- und Kleinschreibung behandelt werden soll. Der casing_mode-Parameter verwendt die folgenden Werte, um das Verhalten der Groß-/Kleinschreibung festzulegen:

    • none – Ändern Sie die Groß- und Kleinschreibung der angegebenen Schema- und Tabellennamen nicht. Dies ist die Standardeinstellung für Konnektoren, denen eine Glue-Connection zugeordnet ist.

    • upper – Großschreibung aller angegebenen Schema- und Tabellennamen.

    • lower – Kleinschreibung aller angegebenen Schema- und Tabellennamen.

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

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

  • Der mit Glue-Connection erstellte SAP-HANA-Connector unterstützt nur ConnectionSchemaVersion 2.

Verbindungszeichenfolge

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

saphana://${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 SaphanaMuxCompositeHandler
Metadaten-Handler SaphanaMuxMetadataHandler
Record Handler SaphanaMuxRecordHandler
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 mysaphanacatalog ist, dann lautet der Name der Umgebungsvariablen mysaphanacatalog_connection_string.
default Erforderlich Die standardmäßige Verbindungszeichenfolge. Diese Zeichenfolge wird verwendet, wenn der Katalog lambda:${AWS_LAMBDA_FUNCTION_NAME} ist.

Die folgenden Beispieleigenschaften gelten für eine SAP HANA MUX Lambda-Funktion, die zwei Datenbankinstanzen unterstützt: saphana1 (die Standardeinstellung) und saphana2.

Eigenschaft Wert
default saphana://jdbc:sap://saphana1.host:port/?${Test/RDS/ Saphana1}
saphana_catalog1_connection_string saphana://jdbc:sap://saphana1.host:port/?${Test/RDS/ Saphana1}
saphana_catalog2_connection_string saphana://jdbc:sap://saphana2.host:port/?user=sample2&password=sample2
Bereitstellen von Anmeldeinformationen

Um einen Benutzernamen und ein Kennwort für Ihre Datenbank in Ihrer JDBC-Verbindungszeichenfolge anzugeben, können Sie Eigenschaften von Verbindungszeichenfolgen oder AWS Secrets Manager verwenden.

  • Verbindungszeichenfolge – Ein Benutzername und ein Kennwort können als Eigenschaften in der JDBC-Verbindungszeichenfolge angegeben werden.

    Wichtig

    Als bewährte Sicherheitsmethode sollten Sie keine fest kodierten Anmeldeinformationen in Ihren Umgebungsvariablen oder Verbindungszeichenfolgen verwenden. Informationen zum Verschieben von fest codierten Secrets nach AWS Secrets Manager finden Sie unter Verschieben von fest codierten Secrets nach AWS Secrets Manager im AWS Secrets Manager-Benutzerhandbuch.

  • AWS Secrets Manager – Um das Athena-Federated-Query-Feature mit AWS Secrets Manager zu verwenden, sollte die mit Ihrer Lambda-Funktion verbundene VPC über einen Internetzugang oder einen VPC-Endpunkt verfügen, um eine Verbindung zu Secrets Manager herzustellen.

    Sie können den Namen eines Secrets in AWS Secrets Manager in Ihrer JDBC-Verbindungszeichenfolge eingeben. Der Konnektor ersetzt den geheimen Namen durch username- und password-Werte von Secrets Manager.

    Für Amazon RDS-Datenbank-Instances ist diese Unterstützung eng integriert. Wenn Sie Amazon RDS verwenden, empfehlen wir dringend die Verwendung von AWS Secrets Manager und Wechsel der Anmeldeinformationen. Wenn Ihre Datenbank Amazon RDS nicht verwendet, speichern Sie die Anmeldeinformationen als JSON im folgenden Format:

    {"username": "${username}", "password": "${password}"}
Beispiel einer Verbindungszeichenfolge mit einem geheimen Namen

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

saphana://jdbc:sap://saphana1.host:port/?${Test/RDS/Saphana1}&...

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

saphana://jdbc:sap://saphana1.host:port/?user=sample2&password=sample2&...

Derzeit erkennt der SAP-HANA-Konnektor die user- und password-JDBC-Eigenschaften.

Verwenden eines einzelnen Verbindungs-Handlers

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

Handler-Typ Klasse
Composite Handler SaphanaCompositeHandler
Metadaten-Handler SaphanaMetadataHandler
Record Handler SaphanaRecordHandler
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 SAP HANA-Instance, die von einer Lambda-Funktion unterstützt wird.

Eigenschaft Wert
default saphana://jdbc:sap://saphana1.host:port/?secret=Test/RDS/Saphana1

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

Datentypunterstützung

Die folgende Tabelle zeigt die entsprechenden Datentypen für JDBC und Apache Arrow.

JDBC Arrow
Boolesch Bit
Ganzzahl Tiny
Short Smallint
Ganzzahl Int
Long Bigint
float Float4
Double Float8
Datum Dateday
Zeitstempel DateMilli
String Varchar
Bytes Varbinary
BigDecimal Dezimalwert
ARRAY Auflisten

Datentypkonvertierungen

Zusätzlich zu den Konvertierungen von JDBC in Arrow führt der Konnektor bestimmte andere Konvertierungen durch, um die SAP-HANA-Quelle und die Athena-Datentypen kompatibel zu machen. Diese Konvertierungen tragen dazu bei, dass Abfragen erfolgreich ausgeführt werden. Die folgende Tabelle zeigt diese Konvertierungen.

Quelldatentyp (SAP HANA) Konvertierter Datentyp (Athena)
DECIMAL BIGINT
INTEGER INT
DATUM DATEDAY
TIMESTAMP (ZEITSTEMPEL) DATEMILLI

Alle anderen nicht unterstützten Datentypen werden in VARCHAR konvertiert.

Partitionen und Splits

Eine Partition wird durch eine einzelne Partitionsspalte vom Typ Integer dargestellt. Die Spalte enthält Partitionsnamen der Partitionen, die in einer SAP HANA-Tabelle definiert sind. Für eine Tabelle, die keine Partitionsnamen hat, wird * ausgegeben, was einer einzelnen Partition entspricht. Eine Partition entspricht einem Split.

Name Typ Beschreibung
PART_ID Ganzzahl Benannte Partition in SAP HANA.

Leistung

SAP HANA unterstützt native Partitionen. Der Athena-SAP-HANA-Konnektor kann Daten von diesen Partitionen parallel abrufen. Wenn Sie sehr große Datenmengen mit einheitlicher Partitionsverteilung abfragen möchten, wird eine native Partitionierung dringend empfohlen. Die Auswahl einer Teilmenge von Spalten beschleunigt die Abfragelaufzeit erheblich und reduziert die gescannten Daten. Der Konnektor zeigt aufgrund der Gleichzeitigkeit eine erhebliche Drosselung und manchmal Abfragefehler.

Der Athena-SAP-HANA-Konnektor führt einen Prädikat-Pushdown durch, um die Anzahl der von der Abfrage gescannten Daten zu reduzieren. LIMIT-Klauseln, einfache Prädikate und komplexe Ausdrücke werden an den Konnektor übertragen, um die Menge der gescannten Daten zu reduzieren und die Laufzeit der Abfrage zu verkürzen.

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-SAP-HANA-Konnektor kann diese Ausdrücke kombinieren und sie direkt an SAP HANA weiterleiten, um die Funktionalität zu erweitern und die Menge der gescannten Daten zu reduzieren.

Die folgenden Athena-SAP-HANA-Konnektor-Operatoren 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_UNTERSCHIEDEN VON, NULL_WENN, 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;

Pass-Through-Abfragen

Der SAP-HANA-Connector unterstützt Pass-Through-Abfragen. Pass-Through-Abfragen verwenden eine Tabellenfunktion, um Ihre vollständige Abfrage zur Ausführung an die Datenquelle weiterzuleiten.

Um Pass-Through-Abfragen mit SAP HANA zu verwenden, können Sie die folgende Syntax verwenden:

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

Die folgende Beispielabfrage gibt eine Abfrage an eine Datenquelle in SAP HANA weiter. 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 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

Die neuesten Informationen zur SAP-HANA-Treiberversion finden Sie in der pom.xml-Datei für den Oracle-Konnektor auf GitHub.com.

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