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 Azure Data Lake Storage (ADLS) Gen2-Konnektor
Der Amazon Athena-Konnektor für Azure Data Lake Storage (ADLS) Gen2
Dieser Konnektor kann nicht als Verbundkatalog bei Glue Data Catalog registriert werden. Dieser Konnektor unterstützt keine in Lake Formation definierten Datenzugriffskontrollen auf Katalog-, Datenbank-, Tabellen-, Spalten-, Zeilen- und Tagebene. Dieser Konnektor verwendet Glue Connections, um die Konfigurationseigenschaften in Glue zu zentralisieren.
-
Arbeitsablauf — Der Konnektor implementiert die JDBC Schnittstelle, die den
com.microsoft.sqlserver.jdbc.SQLServerDriver
Treiber verwendet. Der Konnektor leitet Abfragen an die Azure-Synapse-Engine weiter, die dann auf den Data Lake zugreift. -
Datenverarbeitung und S3 – Normalerweise fragt der Lambda-Konnektor Daten direkt ab, ohne sie an Amazon S3 zu übertragen. Wenn die von der Lambda-Funktion zurückgegebenen Daten jedoch die Lambda-Grenzwerte überschreiten, werden die Daten in den von Ihnen angegebenen Amazon-S3-Spill-Bucket geschrieben, sodass Athena den Überschuss lesen kann.
-
AADAuthentifizierung — AAD kann als Authentifizierungsmethode für den Azure Synapse-Konnektor verwendet werden. Um verwendet zu werdenAAD, muss die JDBC Verbindungszeichenfolge, die der Konnektor verwendet, die URL Parameter
authentication=ActiveDirectoryServicePrincipal
AADSecurePrincipalId
, undAADSecurePrincipalSecret
enthalten. Diese Parameter können entweder direkt oder von Secrets Manager übergeben werden.
Voraussetzungen
Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Weitere Informationen finden Sie unter Erstellen Sie eine Datenquellenverbindung oder Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen.
Einschränkungen
-
DDLSchreibvorgänge 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.
-
Datums- und Zeitstempeldatentypen in Filterbedingungen müssen in geeignete Datentypen umgewandelt werden.
Bedingungen
Die folgenden Begriffe beziehen sich auf den Gen2-Konnektor von Azure Data Lake Storage.
-
Datenbank-Instance — Jede Instanz einer Datenbank, die vor Ort, bei Amazon EC2 oder bei Amazon bereitgestellt wirdRDS.
-
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 Azure Data Lake Storage Gen2-Connector 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-Datenquellenconnectors, die vor dem 3. Dezember 2024 erstellt wurden. Diese können sich von ihren entsprechenden AWS Glue Verbindungseigenschaften unterscheiden. Verwenden Sie ab dem 3. Dezember 2024 die folgenden Parameter nur, wenn Sie eine frühere Version eines Athena-Datenquellenconnectors manuell bereitstellen.
Verbindungszeichenfolge
Verwenden Sie eine JDBC Verbindungszeichenfolge im folgenden Format, um eine Verbindung zu einer Datenbankinstanz herzustellen.
datalakegentwo://${
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 | DataLakeGen2MuxCompositeHandler |
Metadaten-Handler | DataLakeGen2MuxMetadataHandler |
Record Handler | DataLakeGen2MuxRecordHandler |
Multiplex-Handler-Parameter
Parameter | Beschreibung |
---|---|
$ |
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 mydatalakegentwocatalog ist, dann lautet der Name der Umgebungsvariablen mydatalakegentwocatalog_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 beziehen sich auf eine DataLakeGen MUX 2-Lambda-Funktion, die zwei Datenbankinstanzen unterstützt: datalakegentwo1
(Standard) unddatalakegentwo2
.
Eigenschaft | Wert |
---|---|
default |
datalakegentwo://jdbc:sqlserver://adlsgentwo1. |
datalakegentwo_catalog1_connection_string |
datalakegentwo://jdbc:sqlserver://adlsgentwo1. |
datalakegentwo_catalog2_connection_string |
datalakegentwo://jdbc:sqlserver://adlsgentwo2. |
Bereitstellen von Anmeldeinformationen
Um einen Benutzernamen und ein Passwort für Ihre Datenbank in Ihrer JDBC Verbindungszeichenfolge anzugeben, können Sie die Eigenschaften der Verbindungszeichenfolge oder AWS Secrets Manager verwenden.
-
Verbindungszeichenfolge — Ein Benutzername und ein Passwort 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 hartcodierten Geheimnissen nach AWS Secrets Manager finden Sie AWS Secrets Manager im AWS Secrets Manager Benutzerhandbuch unter Verschieben von hartcodierten Geheimnissen nach.
-
AWS Secrets Manager— Um die Athena Federated Query-Funktion verwenden zu können AWS Secrets Manager, muss die mit Ihrem Lambda VPC verbundene Funktion über einen Internetzugang
oder einen VPCEndpunkt verfügen, über den Sie sich mit Secrets Manager verbinden können. Sie können den Namen eines Geheimnisses AWS Secrets Manager in Ihre JDBC Verbindungszeichenfolge eingeben. Der Konnektor ersetzt den geheimen Namen durch
username
- undpassword
-Werte von Secrets Manager.Für RDS Amazon-Datenbank-Instances ist diese Unterstützung eng integriert. Wenn Sie Amazon verwendenRDS, empfehlen wir dringend, eine Rotation der Anmeldeinformationen zu verwenden AWS Secrets Manager . Wenn Ihre Datenbank Amazon nicht verwendetRDS, speichern Sie die Anmeldeinformationen JSON im folgenden Format:
{"username": "${username}", "password": "${password}"}
Beispiel einer Verbindungszeichenfolge mit einem geheimen Namen
Die folgende Zeichenfolge hat den geheimen Namen ${secret1_name}
.
datalakegentwo://jdbc:sqlserver://
hostname
:port
;databaseName=database_name
;${secret1_name}
Der Konnektor verwendet den geheimen Namen, um Secrets abzurufen und den Benutzernamen und das Kennwort bereitzustellen, wie im folgenden Beispiel gezeigt.
datalakegentwo://jdbc:sqlserver://
hostname
:port
;databaseName=database_name
;user=user_name
;password=password
Verwenden eines einzelnen Verbindungs-Handlers
Sie können die folgenden Einzelverbindungsmetadaten und Datensatzhandler verwenden, um eine Verbindung zu einer einzelnen Gen2-Instance von Azure Data Lake Storage herzustellen.
Handler-Typ | Klasse |
---|---|
Composite Handler | DataLakeGen2CompositeHandler |
Metadaten-Handler | DataLakeGen2MetadataHandler |
Record Handler | DataLakeGen2RecordHandler |
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 Gen2-Instance von Azure Data Lake Storage, die von einer Lambda-Funktion unterstützt wird.
Eigenschaft | Wert |
---|---|
default |
datalakegentwo://jdbc:sqlserver:// |
Überlauf-Parameter
Das Lambda SDK kann Daten an Amazon S3 weitergeben. 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 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. |
Datentypunterstützung
Die folgende Tabelle zeigt die entsprechenden Datentypen für ADLS Gen2 und Arrow.
ADLSGen2 | Arrow |
---|---|
Bit | TINYINT |
tinyint | SMALLINT |
smallint | SMALLINT |
int | INT |
bigint | BIGINT |
Dezimalwert | DECIMAL |
numeric | FLOAT8 |
smallmoney | FLOAT8 |
money | DECIMAL |
float[24] | FLOAT4 |
float[53] | FLOAT8 |
real | FLOAT4 |
datetime | Datum () MILLISECOND |
datetime2 | Datum (MILLISECOND) |
smalldatetime | Datum (MILLISECOND) |
date | Datum (DAY) |
time | VARCHAR |
datetimeoffset | Datum (MILLISECOND) |
char[n] | VARCHAR |
varchar[n/max] | VARCHAR |
Partitionen und Splits
Azure Data Lake Storage Gen2 verwendet Hadoop-kompatiblen Gen2-Blob-Speicher zum Speichern von Datendateien. Die Daten aus diesen Dateien werden von der Azure-Synapse-Engine abgefragt. Die Azure-Synapse-Engine behandelt in Dateisystemen gespeicherte Gen2-Daten als externe Tabellen. Die Partitionen werden basierend auf dem Datentyp implementiert. Wenn die Daten bereits innerhalb des Gen 2-Speichersystems partitioniert und verteilt wurden, ruft der Konnektor die Daten als Single Split ab.
Leistung
Der Gen2-Konnektor von Azure Data Lake Storage zeigt eine langsamere Abfrageleistung, wenn mehrere Abfragen gleichzeitig ausgeführt werden, und unterliegt einer Drosselung.
Der Athena-Gen2-Konnektor von Azure Data Lake Storage führt einen Prädikat-Pushdown durch, um die von der Abfrage durchsuchten Daten zu reduzieren. Einfache Prädikate und komplexe Ausdrücke werden an den Konnektor übertragen, um die Menge der gescannten Daten zu reduzieren und die Laufzeit der Abfrageausführung zu verkürzen.
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-Gen2-Konnektor von Azure Data Lake Storage kann diese Ausdrücke kombinieren und sie direkt an Azure Data Lake Storage Gen2 weiterleiten, um die Funktionalität zu erweitern und die Menge der gescannten Daten zu reduzieren.
Die folgenden Athena-Gen2-Konnektor-Operatoren von Azure Data Lake Storage unterstützen den Prädikat-Pushdown:
-
Boolean:, ODER, AND NOT
-
Gleichheit:EQUAL, NOT _, _EQUAL, LESS _ LESS _OR_THAN, _EQUAL, THAN _ GREATER _OR_, THAN THAN EQUAL _IF, GREATER IS_ NULL NULL
-
Arithmetik:,,,,, ADD SUBTRACT MULTIPLY DIVIDE MODULUS NEGATE
-
Andere: LIKE _PATTERN, 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%');
Passthrough-Abfragen
Der Azure Data Lake Storage Gen2-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 Azure Data Lake Storage Gen2 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 Azure Data Lake Storage Gen2 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
Weitere Ressourcen
Die neuesten Informationen zur JDBC Treiberversion finden Sie in der Datei pom.xml
Weitere Informationen zu diesem Connector finden Sie auf der entsprechenden Website