

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.

# Nutzung von Amazon-Athena-Verbundabfrage
<a name="federated-queries"></a>

Wenn Daten in anderen Quellen als Amazon S3 vorliegen, können Sie Athena-Verbundabfrage verwenden, um die Daten direkt in diesen Quellen abzufragen oder um Pipelines zu erstellen, die Daten aus mehreren Datenquellen extrahieren und in Amazon S3 speichern. Athena-Verbundabfrage ermöglicht Ihnen die Ausführung von SQL-Abfragen für Daten, die in relationalen, nicht relationalen, benutzerdefinierten und Objektdatenquellen gespeichert sind.

Athena verwendet *Datenquellenconnectors*, auf denen AWS Lambda Verbundabfragen ausgeführt werden. Ein Datenquellen-Connector ist ein Codestück, das zwischen der Zieldatenquelle und Athena übersetzen kann. Sie können sich einen Connector als eine Erweiterung der Abfrage-Engine von Athena vorstellen. Für Datenquellen wie Amazon CloudWatch Logs, Amazon DynamoDB, Amazon DocumentDB und Amazon RDS sowie JDBC-konforme relationale Datenquellen wie MySQL und PostgreSQL gibt es unter der Apache 2.0-Lizenz vorgefertigte Athena-Datenquellenschnittstellen. Sie können auch den SDK von Athena Query Federation verwenden, um Connectors zu schreiben. Um einen Datenquellen-Connector für Ihr Konto auszuwählen, zu konfigurieren und bereitzustellen, können Sie die Athena- und Lambda-Konsole oder AWS Serverless Application Repository verwenden. Nach der Bereitstellung wird der Datenquellen-Connector einem Katalog zugeordnet, den Sie in SQL-Abfragen angeben können. Sie können SQL-Anweisungen aus mehreren Katalogen kombinieren und mehrere Datenquellen mit einer einzigen Abfrage abfragen.

Wenn für eine Datenquelle eine Abfrage ausgeführt wird, ruft Athena den entsprechenden Connector auf, um die Teile der Tabellen zu identifizieren, die gelesen werden müssen, verwaltet die Parallelität und schiebt Filterprädikate nach unten. Basierend auf dem Benutzer, der die Abfrage übermittelt, können Connectors den Zugriff auf bestimmte Datenelemente zulassen oder einschränken. Connectors verwenden Apache Arrow als Format für die von einer Abfrage angeforderten zurückgegebenen Daten. Dies ermöglicht die Implementierung von Connectors in Sprachen wie C, C\$1\$1, Java, Python und Rust. Da Connectors in Lambda verarbeitet werden, können sie für den Zugriff auf Daten aus beliebigen Cloud- oder On-Premises-Datenquellen verwendet werden, auf die Lambda zugreifen kann.

Um einen eigenen Datenquellen-Connector zu schreiben, können Sie mittels des SDKs für Athena Query Federation einen der vorab entwickelten Connectors anpassen, die Amazon Athena bereitstellt und verwaltet. [Sie können eine Kopie des Quellcodes aus dem [GitHub Repository](https://github.com/awslabs/aws-athena-query-federation/wiki/Available-Connectors) ändern und dann das Connector-Veröffentlichungstool verwenden, um Ihr eigenes Paket zu erstellen.](https://github.com/awslabs/aws-athena-query-federation/wiki/Connector_Publish_Tool) AWS Serverless Application Repository 

**Anmerkung**  
Drittanbieter-Entwickler haben möglicherweise das SDK für Athena Query Federation zum Schreiben von Datenquellen-Connectors verwendet. Bei Support- oder Lizenzierungsproblemen mit diesen Datenquellen-Connectors wenden Sie sich bitte an Ihren Connector-Anbieter. Diese Konnektoren werden nicht getestet oder unterstützt von AWS. 

Eine Liste der Datenquellen-Connectors, die von Athena geschrieben und getestet wurden, finden Sie unter [Verfügbare Datenquellenkonnektoren](connectors-available.md).

Informationen zum Schreiben Ihres eigenen Datenquellen-Connectors finden Sie unter [Beispiel für einen Athena-Connector](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-example). GitHub

## Überlegungen und Einschränkungen
<a name="connect-to-a-data-source-considerations"></a>
+ **Engine-Versionen** – Athena-Verbundabfrage wird nur von der Athena-Engine Version 2 und späteren Versionen unterstützt. Weitere Informationen über Athena-Engine-Versionen finden Sie unter [Athena-Engine-Versionierung](engine-versions.md).
+ **Ansichten** – Sie können Ansichten für verbundene Datenquellen erstellen und abfragen. Verbundene Ansichten werden in AWS Glue, nicht in der zugrunde liegenden Datenquelle gespeichert. Weitere Informationen finden Sie unter [Verbundansichten abfragen](running-federated-queries.md#running-federated-queries-federated-views).
+ **Abgegrenzte Kennungen** – Abgegrenzte Kennungen (bzw. Kennungen in Anführungszeichen) beginnen und enden mit einem doppelten Anführungszeichen ("). Derzeit werden durch Trennzeichen abgegrenzte Kennungen für Verbundabfragen in Athena nicht unterstützt.
+ **Schreiboperationen** – Schreiboperationen wie [INSERT INTO](insert-into.md) werden nicht unterstützt. Ein Versuch, dies zu tun, kann zur Fehlermeldung führen: Dieser Vorgang wird derzeit für externe Kataloge nicht unterstützt.
+  **Preise** – Informationen zu den Preisen finden unter [Amazon-Athena-Preise](https://aws.amazon.com/athena/pricing/).
+ **JDBC-Treiber** – Um den JDBC-Treiber mit Verbundabfragen oder einem [externen Hive-Metastore](connect-to-data-source-hive.md) zu verwenden, schließen Sie `MetadataRetrievalMethod=ProxyAPI` in Ihre JDBC-Verbindungszeichenfolge ein. Informationen zum JDBC-Treiber finden Sie unter [Verbindung zu Amazon Athena mit JDBC herstellen](connect-with-jdbc.md). 
+ **Secrets Manager** – So verwenden Sie das Athena-Federated-Query-Feature mit AWS Secrets Manager müssen Sie einen privaten Amazon-VPC-Endpunkt für Secrets Manager konfigurieren. Weitere Informationen finden Sie unter [Erstellen eines privaten Secrets-Manager-VPC-Endpunkts](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html#vpc-endpoint-create) im *Benutzerhandbuch für AWS Secrets Manager *.

## Erforderliche Berechtigungen
<a name="connect-to-a-data-source-permissions"></a>

Datenquellen-Connectors benötigen möglicherweise Zugriff auf die folgenden Ressourcen, um ordnungsgemäß zu funktionieren. Wenn Sie einen vorab erstellten Connector verwenden, müssen Sie die Informationen für den Connector prüfen, um sicherzustellen, dass Ihre VPC korrekt konfiguriert ist. Sie müssen außerdem sicherstellen, dass IAM-Prinzipale, die Abfragen ausführen und Connectors erstellen, die nötigen Berechtigungen für die erforderlichen Aktionen besitzen. Weitere Informationen finden Sie unter [Zugriff auf Athena Federated Query zulassen: Beispiel-Richtlinien](federated-query-iam-access.md).
+ **Amazon S3** – Zusätzlich zum Schreiben von Abfrageergebnissen zum Athena-Abfrageergebnisspeicherort in Amazon S3 schreiben Daten-Connectors auch zu einem Spill-Bucket in Amazon S3. Konnektivität und Berechtigungen für diesen Amazon-S3-Standort sind erforderlich. Wir empfehlen, für jeden Connector eine Spill-to-Disk-Verschlüsselung zu verwenden und die [S3-Lebenszykluskonfiguration](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) zu verwenden, um verschüttete Daten, die nicht mehr benötigt werden, ablaufen zu lassen.
+ **Athena** – Datenquellen benötigen Konnektivität mit Athena und umgekehrt, um den Abfragestatus zu prüfen und ein übermäßiges Scannen zu verhindern.
+ **AWS Glue Data Catalog** – Es sind Verbindungen und Berechtigungen erforderlich, wenn Ihr Connector Datenkatalog für ergänzende oder primäre Metadaten verwendet.
+ **Amazon ECR** – Lambda-Funktionen des Datenquellen-Connectors verwenden ein Amazon ECR-Bild aus einem Amazon ECR-Repository. Der Benutzer, der den Connector bereitstellt, muss über die Berechtigungen `ecr:BatchGetImage` und `ecr:GetDownloadUrlForLayer` verfügen. Weitere Informationen finden Sie unter [Amazon-ECR-Berechtigungen](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html#gettingstarted-images-permissions) im *AWS Lambda -Entwicklerhandbuch*.

## Videos
<a name="connect-to-a-data-source-videos"></a>

Sehen Sie sich die folgenden Videos an, um mehr über die Verwendung von Athena Federated Query zu erfahren.

**Video: Schnelle Analyse der Ergebnisse einer Verbundabfrage in Amazon Athena**  
Das folgende Video zeigt, wie die Ergebnisse einer Athena-Verbundabfrage in Quick analysiert werden.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/HyM5d0TmwAQ/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/HyM5d0TmwAQ)


**Video: Game Analytics Pipeline**  
Das folgende Video zeigt, wie Sie eine skalierbare Serverless-Data-Pipeline bereitstellen, um Telemetriedaten aus Spielen und Diensten mithilfe von Amazon-Athena-Verbundabfragen aufzunehmen, zu speichern und zu analysieren.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/xcS-flUMVbs/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/xcS-flUMVbs)


# Verfügbare Datenquellenkonnektoren
<a name="connectors-available"></a>

In diesem Abschnitt werden vorab erstellte Athena-Datenquellen-Konnektors aufgeführt, mit denen Sie zahlreiche Datenquellen außerhalb von Amazon S3 abfragen können. Um einen Konnektor in Ihren Athena-Abfragen zu verwenden, konfigurieren Sie ihn und stellen ihn in Ihrem Konto bereit. 

## Überlegungen und Einschränkungen
<a name="connectors-available-considerations"></a>
+ Für einige vorgefertigte Konnektors müssen Sie eine VPC und eine Sicherheitsgruppe erstellen, bevor Sie den Konnektor verwenden können. Hinweise zum Erstellen finden VPCs Sie unter[Erstellen Sie eine VPC für einen Datenquellenconnector oder AWS Glue eine Datenquellenverbindung](athena-connectors-vpc-creation.md). 
+ Um die Athena Federated Query-Funktion mit verwenden zu können AWS Secrets Manager, müssen Sie einen privaten Amazon VPC-Endpunkt für Secrets Manager konfigurieren. Weitere Informationen finden Sie unter [Erstellen eines privaten Secrets-Manager-VPC-Endpunkts](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html#vpc-endpoint-create) im *Benutzerhandbuch für AWS Secrets Manager *. 
+ Bei Konnektoren, die kein Prädikat-Pushdown unterstützen, dauert die Ausführung von Abfragen, die ein Prädikat enthalten, länger. Bei kleinen Datensätzen werden nur sehr wenige Daten gescannt, und Abfragen dauern durchschnittlich etwa 2 Minuten. Bei großen Datensätzen kann es jedoch zu einer Zeitüberschreitung bei vielen Abfragen kommen.
+ Einige föderierte Datenquellen verwenden Terminologie, um auf Datenobjekte zu verweisen, die sich von Athena unterscheiden. Weitere Informationen finden Sie unter [Grunlegendes über Qualifikatoren für verbundene Tabellennamen](tables-qualifiers.md).
+ Wir aktualisieren unsere Konnektoren regelmäßig auf der Grundlage von Upgrades vom Datenbank- oder Datenquellenanbieter. Wir unterstützen keine Datenquellen, für die Support zur Verfügung steht end-of-life.
+ Bei Konnektoren, die beim Auflisten von Tabellen keine Paginierung unterstützen, kann es beim Webservice zu einem Timeout kommen, wenn Ihre Datenbank viele Tabellen und Metadaten enthält. Die folgenden Konnektoren bieten Unterstützung für die Paginierung von Auflistungstabellen:
  + DocumentDB
  + DynamoDB
  + MySQL
  + OpenSearch
  + Oracle
  + PostgreSQL
  + Redshift
  + SQL Server

## Case-Resolver-Modi im Verbund-SDK
<a name="case-resolver-modes"></a>

Das Verbund-SDK unterstützt die folgenden standardisierten Case-Resolver-Modi für Schema- und Tabellennamen:
+ `NONE` – Ändert die Groß- und Kleinschreibung der angegebenen Schema- und Tabellennamen nicht.
+ `LOWER` – Kleinschreibung aller angegebenen Schema- und Tabellennamen.
+ `UPPER` – Großschreibung aller angegebenen Schema- und Tabellennamen.
+ `ANNOTATION` – Dieser Modus wird nur aus Gründen der Abwärtskompatibilität beibehalten und ausschließlich von vorhandenen Snowflake- und SAP HANA-Konnektoren unterstützt.
+ `CASE_INSENSITIVE_SEARCH` – Führt Suchen nach Schema- und Tabellennamen ohne Berücksichtigung der Groß- und Kleinschreibung durch.

## Connector-Unterstützung für Case-Resolver-Modi
<a name="connector-support-matrix"></a>

### Basismodus-Support
<a name="basic-mode-support"></a>

Alle JDBC-Konnektoren unterstützen die folgenden Basismodi:
+ `NONE`
+ `LOWER`
+ `UPPER`

### Annotationsmodus-Support
<a name="annotation-mode-support"></a>

Nur die folgenden Konnektoren unterstützen den `ANNOTATION`-Modus:
+ Snowflake
+ SAP HANA

**Anmerkung**  
Es wird empfohlen, CASE\$1INSENSITIVE\$1SEARCH anstelle von ANNOTATION zu verwenden.

### Unterstützung für die Suche ohne Berücksichtigung der Groß-/Kleinschreibung
<a name="case-insensitive-search-support"></a>

Die folgenden Konnektoren unterstützen `CASE_INSENSITIVE_SEARCH`:
+ DataLake Gen2
+ Snowflake
+ Oracle
+ Synapse
+ MySQL
+ PostgreSQL
+ Redshift
+ ClickHouse
+ SQL Server
+ DB2

## Einschränkungen beim Case-Resolver
<a name="case-resolver-limitations"></a>

Beachten Sie bei der Verwendung von Fallauflösungsmodi die folgenden Einschränkungen:
+ Wenn Sie `LOWER`-Modus verwenden, müssen Ihr Schemaname und alle Tabellen innerhalb des Schemas in Kleinbuchstaben geschrieben sein.
+ Wenn Sie `UPPER`-Modus verwenden, müssen Ihr Schemaname und alle Tabellen innerhalb des Schemas in Großbuchstaben geschrieben sein.
+ Bei der Verwendung von`CASE_INSENSITIVE_SEARCH`:
  + Schema-Namen müssen eindeutig sein
  + Tabellennamen innerhalb eines Schemas müssen eindeutig sein (Sie können beispielsweise nicht gleichzeitig „Apple“ und „APPLE“ haben)
+ Einschränkungen der Glue-Integration:
  + Glue unterstützt nur Namen in Kleinbuchstaben
  + Nur die `LOWER` Modi `NONE` oder funktionieren, wenn Sie Ihre Lambda-Funktion GlueDataCatalog mit/ registrieren LakeFormation

## Zusätzliche Informationen
<a name="connectors-available-additional-resources"></a>
+ Hinweise zum Bereitstellen eines Athena-Datenquellen-Konnektors finden Sie unter [Nutzung von Amazon-Athena-Verbundabfrage](federated-queries.md). 
+ Informationen zu Abfragen, die Athena-Datenquellen-Konnektors verwenden, finden Sie unter [Verbundabfragen ausführen](running-federated-queries.md).

**Topics**
+ [Überlegungen und Einschränkungen](#connectors-available-considerations)
+ [Case-Resolver-Modi im Verbund-SDK](#case-resolver-modes)
+ [Connector-Unterstützung für Case-Resolver-Modi](#connector-support-matrix)
+ [Einschränkungen beim Case-Resolver](#case-resolver-limitations)
+ [Zusätzliche Informationen](#connectors-available-additional-resources)
+ [Azure Data Lake Storage](connectors-adls-gen2.md)
+ [Azure Synapse](connectors-azure-synapse.md)
+ [Cloudera Hive](connectors-cloudera-hive.md)
+ [Cloudera Impala](connectors-cloudera-impala.md)
+ [CloudWatch](connectors-cloudwatch.md)
+ [CloudWatch Metriken](connectors-cwmetrics.md)
+ [CMDB](connectors-cmdb.md)
+ [Db2](connectors-ibm-db2.md)
+ [Db2 iSeries](connectors-ibm-db2-as400.md)
+ [DocumentDB](connectors-docdb.md)
+ [DynamoDB](connectors-dynamodb.md)
+ [Google BigQuery](connectors-bigquery.md)
+ [Google Cloud Storage](connectors-gcs.md)
+ [HBase](connectors-hbase.md)
+ [Hortonworks](connectors-hortonworks.md)
+ [Kafka](connectors-kafka.md)
+ [MSK](connectors-msk.md)
+ [MySQL](connectors-mysql.md)
+ [Neptune](connectors-neptune.md)
+ [OpenSearch](connectors-opensearch.md)
+ [Oracle](connectors-oracle.md)
+ [PostgreSQL](connectors-postgresql.md)
+ [Redis OSS](connectors-redis.md)
+ [Redshift](connectors-redshift.md)
+ [SAP HANA](connectors-sap-hana.md)
+ [Snowflake](connectors-snowflake.md)
+ [SQL Server](connectors-microsoft-sql-server.md)
+ [Teradata](connectors-teradata.md)
+ [Timestream](connectors-timestream.md)
+ [TPC-DS](connectors-tpcds.md)
+ [Vertica](connectors-vertica.md)

**Anmerkung**  
Die [AthenaJdbcConnector](https://serverlessrepo.aws.amazon.com/applications/us-east-1/292517598671/AthenaJdbcConnector)(neueste Version 2022.4.1) ist veraltet. Verwenden Sie stattdessen einen datenbankspezifischen Konnektor wie den für [MySQL](connectors-mysql.md), [Redshift](connectors-redshift.md) oder [PostgreSQL](connectors-postgresql.md).

# Amazon Athena Azure Data Lake Storage (ADLS) Gen2-Konnektor
<a name="connectors-adls-gen2"></a>

Der Amazon-Athena-Konnektor für [Azure Data Lake Storage (ADLS) Gen2](https://docs.microsoft.com/en-us/azure/databricks/data/data-sources/azure/adls-gen2/) ermöglicht es Amazon-Athena, SQL-Abfragen für Daten auszuführen, die in ADLS gespeichert sind. Athena kann nicht direkt auf gespeicherte Dateien im Data Lake zugreifen. 

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.
+ **Workflow** – 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.
+ **AAD-Authentifizierung** – AAD kann als Authentifizierungsmethode für den Azure Synapse-Konnektor verwendet werden. Um AAD verwenden zu können, muss die JDBC-Verbindungszeichenfolge, die der Konnektor verwendet, die URL-Parameter `authentication=ActiveDirectoryServicePrincipal`, `AADSecurePrincipalId` und `AADSecurePrincipalSecret` enthalten. Diese Parameter können entweder direkt oder von Secrets Manager übergeben werden.

## Voraussetzungen
<a name="connectors-datalakegentwo-prerequisites"></a>
+ Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Für weitere Informationen siehe [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md) oder [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md).

## Einschränkungen
<a name="connectors-adls-gen2-limitations"></a>
+ 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)](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) im *AWS Lambda -Entwicklerhandbuch.*
+ Datums- und Zeitstempeldatentypen in Filterbedingungen müssen in geeignete Datentypen umgewandelt werden.

## Bedingungen
<a name="connectors-adls-gen2-terms"></a>

Die folgenden Begriffe beziehen sich auf den Gen2-Konnektor von Azure Data Lake Storage.
+ **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 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.

## Parameters
<a name="connectors-adls-gen2-parameters"></a>

Verwenden Sie die Parameter in diesem Abschnitt, um den Gen2-Konnektor von Azure Data Lake Storage 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](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) abweichen. Verwenden Sie ab dem 3. Dezember 2024 die folgenden Parameter nur, wenn Sie eine frühere Version eines Athena-Datenquellen-Connectors [manuell bereitstellen](connect-data-source-serverless-app-repo.md).

### Glue Connections (empfohlen)
<a name="adls-gen2-gc"></a>

Wir empfehlen, dass Sie einen Azure Data Lake Storage Gen2-Connector mithilfe eines Glue-Connections-Objekts konfigurieren. Setzen Sie dazu die `glue_connection` Umgebungsvariable des Azure Data Lake Storage Gen2-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 DATALAKEGEN2
```

**Lambda-Umgebungseigenschaften**
+ **glue\$1connection** – Gibt den Namen der Glue-Connection an, die dem Verbund-Connector zugeordnet ist. 
+ **casing\$1mode** – (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-Verbindungen verwenden, müssen diese AWS Secrets Manager zum Speichern von Anmeldeinformationen verwenden.
Der mit Glue-Connection erstellte Azure Data Lake Storage Gen2-Connector unterstützt die Verwendung eines Multiplexing-Handlers nicht.
Der mit Glue-Connection erstellte Azure Data Lake Storage Gen2-Connector unterstützt nur `ConnectionSchemaVersion` 2.

### Legacy-Connections
<a name="adls-gen2-legacy"></a>

#### Verbindungszeichenfolge
<a name="connectors-adls-gen2-connection-string"></a>

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

```
datalakegentwo://${jdbc_connection_string}
```

#### Verwenden eines Multiplexing-Handlers
<a name="connectors-adls-gen2-using-a-multiplexing-handler"></a>

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
<a name="connectors-adls-gen2-multiplexing-handler-parameters"></a>


****  

| Parameter | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | 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\$1connection\$1string. | 
| default | Erforderlich Die standardmäßige Verbindungszeichenfolge. Diese Zeichenfolge wird verwendet, wenn der lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME \$1 Katalog | 

Die folgenden Beispieleigenschaften beziehen sich auf eine DataLakeGen 2-MUX-Lambda-Funktion, die zwei Datenbankinstanzen unterstützt: `datalakegentwo1` (Standard) und. `datalakegentwo2`


****  

| Eigenschaft | Wert | 
| --- | --- | 
| default | datalakegentwo://jdbc:sqlserver://adlsgentwo1.hostname:port;databaseName=database\$1name;\$1\$1secret1\$1name\$1 | 
| datalakegentwo\$1catalog1\$1connection\$1string | datalakegentwo://jdbc:sqlserver://adlsgentwo1.hostname:port;databaseName=database\$1name;\$1\$1secret1\$1name\$1 | 
| datalakegentwo\$1catalog2\$1connection\$1string | datalakegentwo://jdbc:sqlserver://adlsgentwo2.hostname:port;databaseName=database\$1name;\$1\$1secret2\$1name\$1 | 

##### Bereitstellen von Anmeldeinformationen
<a name="connectors-adls-gen2-providing-credentials"></a>

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 Ihrer hartcodierten Geheimnisse nach finden Sie im AWS Secrets Manager Benutzerhandbuch unter [Verschieben von hartcodierten AWS Secrets Manager Geheimnissen nach](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html).AWS Secrets Manager *
+ **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](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) oder einen [VPC-Endpunkt verfügen, um eine Verbindung zu Secrets](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html) Manager herzustellen.

  Sie können den Namen eines Geheimnisses in AWS Secrets Manager Ihre 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, eine Rotation der Anmeldeinformationen zu verwenden AWS Secrets Manager . 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 `${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
<a name="connectors-adls-gen2-using-a-single-connection-handler"></a>

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
<a name="connectors-adls-gen2-single-connection-handler-parameters"></a>


****  

| Parameter | Description | 
| --- | --- | 
| 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://hostname:port;databaseName=;\$1\$1secret\$1name\$1 | 

#### Überlauf-Parameter
<a name="connectors-adls-gen2-spill-parameters"></a>

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 | Description | 
| --- | --- | 
| spill\$1bucket | Erforderlich Überlauf-Bucket-Name. | 
| spill\$1prefix | Erforderlich Schlüssel-Prefix für den Überlauf-Bucket. | 
| spill\$1put\$1request\$1headers | (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. \$1"x-amz-server-side-encryption" : "AES256"\$1). Weitere mögliche Header finden Sie [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)in der Amazon Simple Storage Service API-Referenz. | 

## Datentypunterstützung
<a name="connectors-adls-gen2-data-type-support"></a>

Die folgende Tabelle enthält die entsprechenden Datentypen für ADLS Gen2 und Arrow.


****  

| ADLS Gen2 | 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 | Date(MILLISECOND) | 
| datetime2 | Date(MILLISECOND) | 
| smalldatetime | Date(MILLISECOND) | 
| date | Date(DAY) | 
| time | VARCHAR | 
| datetimeoffset | Date(MILLISECOND) | 
| char[n] | VARCHAR | 
| varchar[n/max] | VARCHAR | 

## Partitionen und Splits
<a name="connectors-adls-gen2-partitions-and-splits"></a>

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
<a name="connectors-adls-gen2-performance"></a>

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
<a name="connectors-datalakegentwo-performance-predicates"></a>

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: **UND, ODER, NICHT
+ **Gleichheit: **GLEICH, NICHT-GLEICH, WENIGER\$1ALS, WENIGER\$1ODER\$1GLEICH, GRÖSSER\$1ALS, GRÖSSER\$1ODER\$1GLEICH, NULL\$1WENN, IST\$1NULL
+ **Arithmetik: **ADDIEREN, SUBTRAHIEREN, MULTIPLIZIEREN, DIVIDIEREN, MODULIEREN, NEGIEREN
+ **Andere: WIE\$1MUSTER, IN**

### Beispiel für einen kombinierten Pushdown
<a name="connectors-datalakegentwo-performance-pushdown-example"></a>

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%');
```

## Pass-Through-Abfragen
<a name="connectors-datalakegentwo-passthrough-queries"></a>

Der Azure Data Lake Storage Gen2-Konnektor unterstützt [Pass-Through-Abfragen](federated-query-passthrough.md). Pass-Through-Abfragen verwenden eine Tabellenfunktion, um Ihre vollständige Abfrage zur Ausführung an die Datenquelle weiterzuleiten.

Um Pass-Through-Abfragen mit Azure Data Lake Storage Gen2 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 Azure Data Lake Storage Gen2 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
<a name="connectors-datalakegentwo-license-information"></a>

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](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-datalakegen2/pom.xml) für diesen Connector und stimmen den Bedingungen der jeweiligen Drittanbieterlizenzen zu, die in der Datei [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-datalakegen2/LICENSE.txt) auf GitHub .com enthalten sind.

## Weitere Ressourcen
<a name="connectors-datalakegentwo-additional-resources"></a>

Die neuesten Informationen zur JDBC-Treiberversion finden Sie in der Datei [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-datalakegen2/pom.xml) für den Azure Data Lake Storage Gen2-Connector auf .com. GitHub

Weitere Informationen zu diesem Connector finden Sie auf [der entsprechenden Website](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-datalakegen2) unter .com. GitHub

# Amazon Athena Azure Synapse Konnektor
<a name="connectors-azure-synapse"></a>

Der Amazon-Athena-Konnektor für [Azure-Synapse-Analytik](https://docs.microsoft.com/en-us/azure/synapse-analytics/overview-what-is) ermöglicht Amazon Athena, SQL-Abfragen für Ihre Azure-Synapse gespeicherte Daten mit JDBC auszuführen.

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
<a name="connectors-synapse-prerequisites"></a>
+ Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Für weitere Informationen siehe [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md) oder [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md).

## Einschränkungen
<a name="connectors-azure-synapse-limitations"></a>
+ 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)](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) im *AWS Lambda -Entwicklerhandbuch.*
+ Unter Filterbedingungen müssen Sie die `Date`- und `Timestamp`-Datentypen in den entsprechenden Datentyp umwandeln.
+ So suchen Sie nach negativen Werten des Typs `Real` und `Float`, verwenden Sie den `<=`- oder `>=`-Operator.
+ Die Datentypen `binary`, `varbinary`, `image` und `rowversion` werden nicht unterstützt.

## Bedingungen
<a name="connectors-azure-synapse-terms"></a>

Die folgenden Begriffe beziehen sich auf den Synapse-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 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.

## Parameters
<a name="connectors-azure-synapse-parameters"></a>

Verwenden Sie die Parameter in diesem Abschnitt, um den Synapse-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](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) abweichen. Verwenden Sie ab dem 3. Dezember 2024 die folgenden Parameter nur, wenn Sie eine frühere Version eines Athena-Datenquellen-Connectors [manuell bereitstellen](connect-data-source-serverless-app-repo.md).

### Glue Connections (empfohlen)
<a name="connectors-azure-synapse-gc"></a>

Wir empfehlen, dass Sie einen Synapse-Connector mithilfe eines Glue-Connections-Objekts konfigurieren. Setzen Sie dazu die `glue_connection`-Umgebungsvariable des Synapse-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 SYNAPSE
```

**Lambda-Umgebungseigenschaften**
+ **glue\$1connection** – Gibt den Namen der Glue-Connection an, die dem Verbund-Connector zugeordnet ist. 
+ **casing\$1mode** – (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-Verbindungen verwenden, müssen diese AWS Secrets Manager zum Speichern von Anmeldeinformationen verwenden.
Der mit Glue-Connection erstellte Synapse-Connector unterstützt die Verwendung eines Multiplexing-Handlers nicht.
Der mit Glue-Connection erstellte Synapse-Connector unterstützt nur `ConnectionSchemaVersion` 2.

### Legacy-Connections (empfohlen)
<a name="connectors-azure-synapse-legacy"></a>

#### Verbindungszeichenfolge
<a name="connectors-azure-synapse-connection-string"></a>

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

```
synapse://${jdbc_connection_string}
```

#### Verwenden eines Multiplexing-Handlers
<a name="connectors-azure-synapse-using-a-multiplexing-handler"></a>

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 | SynapseMuxCompositeHandler | 
| Metadaten-Handler | SynapseMuxMetadataHandler | 
| Record Handler | SynapseMuxRecordHandler | 

##### Multiplex-Handler-Parameter
<a name="connectors-azure-synapse-multiplexing-handler-parameters"></a>


****  

| Parameter | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | 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 mysynapsecatalog ist, dann lautet der Name der Umgebungsvariablen mysynapsecatalog\$1connection\$1string. | 
| default | Erforderlich Die standardmäßige Verbindungszeichenfolge. Diese Zeichenfolge wird verwendet, wenn der lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME \$1 Katalog | 

Die folgenden Beispieleigenschaften gelten für eine Synapse MUX Lambda-Funktion, die zwei Datenbank-Instances unterstützt: `synapse1` (die Standardeinstellung) und `synapse2`.


****  

| Eigenschaft | Wert | 
| --- | --- | 
| default | synapse://jdbc:synapse://synapse1.hostname:port;databaseName=<database\$1name>;\$1\$1secret1\$1name\$1 | 
| synapse\$1catalog1\$1connection\$1string | synapse://jdbc:synapse://synapse1.hostname:port;databaseName=<database\$1name>;\$1\$1secret1\$1name\$1 | 
| synapse\$1catalog2\$1connection\$1string | synapse://jdbc:synapse://synapse2.hostname:port;databaseName=<database\$1name>;\$1\$1secret2\$1name\$1 | 

##### Bereitstellen von Anmeldeinformationen
<a name="connectors-azure-synapse-providing-credentials"></a>

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 hartcodierten Geheimnissen nach AWS Secrets Manager finden Sie AWS Secrets Manager im *AWS Secrets Manager Benutzerhandbuch* unter [Verschieben von hartcodierten Geheimnissen nach](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html).
+ **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](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) oder einen [VPC-Endpunkt verfügen, um eine Verbindung zu Secrets](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html) Manager herzustellen.

  Sie können den Namen eines Geheimnisses in AWS Secrets Manager Ihre 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, eine Rotation der Anmeldeinformationen zu verwenden AWS Secrets Manager . 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 Secret-Namen**  
Die folgende Zeichenfolge hat den geheimen Namen \$1\$1secret\$1name\$1.

```
synapse://jdbc:synapse://hostname:port;databaseName=<database_name>;${secret_name}
```

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

```
synapse://jdbc:synapse://hostname:port;databaseName=<database_name>;user=<user>;password=<password>
```

#### Verwenden eines einzelnen Verbindungs-Handlers
<a name="connectors-azure-synapse-using-a-single-connection-handler"></a>

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


****  

| Handler-Typ | Klasse | 
| --- | --- | 
| Composite Handler | SynapseCompositeHandler | 
| Metadaten-Handler | SynapseMetadataHandler | 
| Record Handler | SynapseRecordHandler | 

##### Parameter für Einzelverbindungs-Handler
<a name="connectors-azure-synapse-single-connection-handler-parameters"></a>


****  

| Parameter | Description | 
| --- | --- | 
| 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 Synapse-Instance, die von einer Lambda-Funktion unterstützt wird.


****  

| Eigenschaft | Wert | 
| --- | --- | 
| default | synapse://jdbc:sqlserver://hostname:port;databaseName=<database\$1name>;\$1\$1secret\$1name\$1 | 

#### Active-Directory-Authentifizierung konfigurieren
<a name="connectors-azure-synapse-configuring-active-directory-authentication"></a>

Der Konnektor von Amazon Athena Azure Synapse unterstützt die Microsoft-Active-Directory-Authentifizierung. Bevor Sie beginnen, müssen Sie im Microsoft Azure-Portal einen Benutzer mit Administratorrechten konfigurieren und diesen dann AWS Secrets Manager zum Erstellen eines Geheimnisses verwenden.

**So legen Sie den administrativen Active-Directory-Benutzer fest**

1. Melden Sie sich mit einem Konto mit Administratorrechten beim Microsoft Azure-Portal unter [https://portal.azure.com/](https://portal.azure.com/)an.

1. Geben Sie in das Suchfeld **Azure Synapse Analytics** ein und wählen Sie dann **Azure Synapse Analytics** aus.  
![\[Wählen Sie Azure Synapse Analytics aus.\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/images/connectors-azure-synapse-1.png)

1. Öffnen Sie das Menü auf der linken Seite.  
![\[Wählen Sie das Azure-Portalmenü.\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/images/connectors-azure-synapse-2.png)

1. Wählen Sie im Navigationsbereich **Azure Active Directory**.

1. Stellen Sie auf der Registerkarte **Administrator festlegen** den **Active-Directory-Administrator** auf einen neuen oder vorhandenen Benutzer ein.  
![\[Verwenden Sie die Registerkarte Administrator festlegen\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/images/connectors-azure-synapse-3.png)

1. Speichern Sie den Administratorbenutzernamen und das Kennwort unter. AWS Secrets Manager Informationen zum Erstellen eines Geheimnisses im Secrets Manager finden Sie unter [Erstellen eines AWS Secrets Manager -Geheimnisses](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html).

**So zeigen Sie Ihr Geheimnis in Secrets Manager an**

1. Öffnen Sie die Secrets Manager Manager-Konsole unter [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Wählen Sie im Navigationsbereich **Secrets** (Geheimnisse).

1. Wählen Sie auf der Seite **Secrets** (Geheimnisse) den Link zu Ihrem Geheimnis aus.

1. Wählen Sie auf der Detailseite für Ihr Geheimnis die Option **Retrieve secret value** (Geheimniswert abrufen).  
![\[Geheimnisse anzeigen in AWS Secrets Manager.\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/images/connectors-azure-synapse-4.png)

##### Verbindungszeichenfolge ändern
<a name="connectors-azure-synapse-modifying-the-connection-string"></a>

Um die Active-Directory-Authentifizierung für den Konnektor zu aktivieren, ändern Sie die Verbindungszeichenfolge mit der folgenden Syntax:

```
synapse://jdbc:synapse://hostname:port;databaseName=database_name;authentication=ActiveDirectoryPassword;{secret_name}
```

##### Benutzen ActiveDirectoryServicePrincipal
<a name="connectors-azure-synapse-using-activedirectoryserviceprincipal"></a>

Der Konnektor von Amazon Athena Azure Synapse unterstützt ebenfalls `ActiveDirectoryServicePrincipal`. Um es zu aktivieren, ändern Sie die Zeichenfolge wie folgt.

```
synapse://jdbc:synapse://hostname:port;databaseName=database_name;authentication=ActiveDirectoryServicePrincipal;{secret_name}
```

Geben Sie für `secret_name` die Anwendungs- oder Client-ID als Benutzernamen und das Geheimnis einer Dienstprinzipalidentität im Passwort an.

#### Überlauf-Parameter
<a name="connectors-azure-synapse-spill-parameters"></a>

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 | Description | 
| --- | --- | 
| spill\$1bucket | Erforderlich Überlauf-Bucket-Name. | 
| spill\$1prefix | Erforderlich Schlüssel-Prefix für den Überlauf-Bucket. | 
| spill\$1put\$1request\$1headers | (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. \$1"x-amz-server-side-encryption" : "AES256"\$1). Weitere mögliche Header finden Sie [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)in der Amazon Simple Storage Service API-Referenz. | 

## Datentypunterstützung
<a name="connectors-azure-synapse-data-type-support"></a>

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


****  

| Synapse | 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 | Date(MILLISECOND) | 
| datetime2 | Date(MILLISECOND) | 
| smalldatetime | Date(MILLISECOND) | 
| date | Date(DAY) | 
| time | VARCHAR | 
| datetimeoffset | Date(MILLISECOND) | 
| char[n] | VARCHAR | 
| varchar[n/max] | VARCHAR | 
| nchar[n] | VARCHAR | 
| nvarchar[n/max] | VARCHAR | 

## Partitionen und Splits
<a name="connectors-azure-synapse-partitions-and-splits"></a>

Eine Partition wird durch eine einzelne Partitionsspalte vom Typ `varchar` dargestellt. Synapse unterstützt die Bereichspartitionierung, sodass die Partitionierung durch Extrahieren der Partitionsspalte und des Partitionsbereichs aus den Synapse-Metadatentabellen implementiert wird. Diese Bereichswerte werden verwendet, um die Splits zu erstellen.

## Leistung
<a name="connectors-azure-synapse-performance"></a>

Die Auswahl einer Teilmenge von Spalten verlangsamt die Abfragelaufzeit erheblich. Der Konnektor zeigt aufgrund der Gleichzeitigkeit eine erhebliche Drosselung.

Der Athena-Synapse-Konnektor 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
<a name="connectors-synapse-performance-predicates"></a>

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

Die folgenden Athena-Synapse-Konnektor-Operatoren unterstützen Prädikat-Pushdown:
+ **Boolean: **UND, ODER, NICHT
+ **Gleichheit: **GLEICH, NICHT-GLEICH, WENIGER\$1ALS, WENIGER\$1ODER\$1GLEICH, GRÖSSER\$1ALS, GRÖSSER\$1ODER\$1GLEICH, NULL\$1WENN, IST\$1NULL
+ **Arithmetik: **ADDIEREN, SUBTRAHIEREN, MULTIPLIZIEREN, DIVIDIEREN, MODULIEREN, NEGIEREN
+ **Andere: WIE\$1MUSTER, IN**

### Beispiel für einen kombinierten Pushdown
<a name="connectors-synapse-performance-pushdown-example"></a>

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%');
```

## Pass-Through-Abfragen
<a name="connectors-synapse-passthrough-queries"></a>

Der Synapse-Connector unterstützt [Pass-Through-Abfragen.](federated-query-passthrough.md) Pass-Through-Abfragen verwenden eine Tabellenfunktion, um Ihre vollständige Abfrage zur Ausführung an die Datenquelle weiterzuleiten.

Um Pass-Through-Abfragen mit Synapse 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 Synapse 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
<a name="connectors-synapse-license-information"></a>

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](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-synapse/pom.xml) für diesen Connector und stimmen den Bedingungen der jeweiligen Drittanbieterlizenzen zu, die in der Datei [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-synapse/LICENSE.txt) auf GitHub .com enthalten sind.

## Weitere Ressourcen
<a name="connectors-synapse-additional-resources"></a>
+ *Einen Artikel, der zeigt, wie Sie Quick und Amazon Athena Federated Query verwenden, um Dashboards und Visualisierungen für Daten zu erstellen, die in Microsoft Azure Synapse-Datenbanken gespeichert sind, finden Sie unter [Durchführen von Multi-Cloud-Analysen mit Quick, Amazon Athena Federated Query und Microsoft Azure Synapse im Big Data-Blog](https://aws.amazon.com/blogs/business-intelligence/perform-multi-cloud-analytics-using-amazon-quicksight-amazon-athena-federated-query-and-microsoft-azure-synapse/).AWS *
+ [Die neuesten Informationen zur JDBC-Treiberversion finden Sie in der Datei pom.xml für den Synapse-Connector auf .com.](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-synapse/pom.xml) GitHub
+ Weitere Informationen zu diesem Connector finden Sie auf [der entsprechenden Website](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-synapse) unter .com. GitHub

# Amazon Athena Cloudera Hive Konnektor
<a name="connectors-cloudera-hive"></a>

Der Amazon Athena-Konnektor für Cloudera Hive ermöglicht es Athena, SQL-Abfragen auf der Hadoop-Verteilung von [Cloudera Hive](https://www.cloudera.com/products/open-source/apache-hadoop/apache-hive.html) auszuführen. Der Connector wandelt Ihre Athena-SQL-Abfragen in ihre äquivalente HiveQL-Syntax um. 

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

## Voraussetzungen
<a name="connectors-hive-prerequisites"></a>
+ Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Für weitere Informationen siehe [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md) oder [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md).
+ Richten Sie eine VPC und eine Sicherheitsgruppe ein, bevor Sie diesen Konnektor verwenden. Weitere Informationen finden Sie unter [Erstellen Sie eine VPC für einen Datenquellenconnector oder AWS Glue eine Datenquellenverbindung](athena-connectors-vpc-creation.md).

## Einschränkungen
<a name="connectors-cloudera-hive-limitations"></a>
+ 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)](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) im *AWS Lambda -Entwicklerhandbuch.*

## Bedingungen
<a name="connectors-cloudera-hive-terms"></a>

Die folgenden Begriffe beziehen sich auf den Cloudera-Hive-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 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.

## Parameters
<a name="connectors-cloudera-hive-parameters"></a>

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

### Glue Connections (empfohlen)
<a name="connectors-cloudera-hive-gc"></a>

Wir empfehlen, dass Sie einen Cloudera Hive-Connector mithilfe eines Glue-Connections-Objekts konfigurieren. Setzen Sie dazu die `glue_connection` Umgebungsvariable des Cloudera Hive-Connectors 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 CLOUDERAHIVE
```

**Lambda-Umgebungseigenschaften**
+ **glue\$1connection** – Gibt den Namen der Glue-Connection an, die dem Verbund-Connector zugeordnet ist. 
+ **casing\$1mode** – (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-Verbindungen verwenden, müssen diese AWS Secrets Manager zum Speichern von Anmeldeinformationen verwenden.
Der mit Glue-Connection erstellte Cloudera Hive-Connector unterstützt die Verwendung eines Multiplexing-Handlers nicht.
Der mit Glue-Connection erstellte Cloudera Hive-Connector unterstützt nur `ConnectionSchemaVersion` 2.

### Legacy-Connections
<a name="connectors-cloudera-hive-legacy"></a>

#### Verbindungszeichenfolge
<a name="connectors-cloudera-hive-connection-string"></a>

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

```
hive://${jdbc_connection_string}
```

#### Verwenden eines Multiplexing-Handlers
<a name="connectors-cloudera-hive-multiplexing-handler"></a>

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
<a name="connectors-cloudera-hive-multiplexing-handler-parameters"></a>


****  

| Parameter | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | 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\$1connection\$1string. | 
| default | Erforderlich Die standardmäßige Verbindungszeichenfolge. Diese Zeichenfolge wird verwendet, wenn der lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME \$1 Katalog | 

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;\$1\$1Test/RDS/hive1\$1 | 
| hive2\$1catalog1\$1connection\$1string | hive://jdbc:hive2://hive1:10000/default;\$1\$1Test/RDS/hive1\$1 | 
| hive2\$1catalog2\$1connection\$1string | hive://jdbc:hive2://hive2:10000/default;UID=sample&PWD=sample | 

##### Bereitstellen von Anmeldeinformationen
<a name="connectors-cloudera-hive-credentials"></a>

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](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) oder einen [VPC-Endpunkt verfügen, um eine Verbindung zu Secrets](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html) 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
<a name="connectors-cloudera-hive-single-connection-handler"></a>

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
<a name="connectors-cloudera-hive-single-connection-handler-parameters"></a>


****  

| Parameter | Description | 
| --- | --- | 
| 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=\$1\$1Test/RDS/hive1\$1 | 

#### Überlauf-Parameter
<a name="connectors-cloudera-hive-spill-parameters"></a>

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 | Description | 
| --- | --- | 
| spill\$1bucket | Erforderlich Überlauf-Bucket-Name. | 
| spill\$1prefix | Erforderlich Schlüssel-Prefix für den Überlauf-Bucket. | 
| spill\$1put\$1request\$1headers | (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. \$1"x-amz-server-side-encryption" : "AES256"\$1). Weitere mögliche Header finden Sie [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)in der Amazon Simple Storage Service API-Referenz. | 

## Datentypunterstützung
<a name="connectors-cloudera-hive-data-type-support"></a>

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 | 
| Date | date | DateDay | 
| Zeitstempel | Zeitstempel | DateMilli | 
| Zeichenfolge | 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
<a name="connectors-cloudera-hive-partitions-and-splits"></a>

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
<a name="connectors-cloudera-hive-performance"></a>

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
<a name="connectors-hive-performance-limit-clauses"></a>

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
<a name="connectors-hive-performance-predicates"></a>

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\$1ALS, WENIGER\$1ODER\$1GLEICH, GRÖSSER\$1ALS, GRÖSSER\$1ODER\$1GLEICH, IST\$1NULL
+ **Arithmetik: **ADDIEREN, SUBTRAHIEREN, MULTIPLIZIEREN, DIVIDIEREN, MODULIEREN, NEGIEREN
+ **Andere: WIE\$1MUSTER, IN**

### Beispiel für einen kombinierten Pushdown
<a name="connectors-hive-performance-pushdown-example"></a>

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
<a name="connectors-hive-passthrough-queries"></a>

Der Cloudera Hive-Connector unterstützt [Pass-Through-Abfragen](federated-query-passthrough.md). Pass-Through-Abfragen verwenden eine Tabellenfunktion, um Ihre vollständige Abfrage zur Ausführung an die Datenquelle weiterzuleiten.

Um Pass-Through-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
<a name="connectors-hive-license-information"></a>

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](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-cloudera-hive/pom.xml) für diesen Connector und stimmen den Bedingungen der jeweiligen Drittanbieterlizenzen zu, die in der Datei [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-cloudera-hive/LICENSE.txt) auf GitHub .com enthalten sind.

## Weitere Ressourcen
<a name="connectors-hive-additional-resources"></a>

Die neuesten Informationen zur JDBC-Treiberversion finden Sie in der Datei [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-cloudera-hive/pom.xml) für den Cloudera Hive-Connector auf .com. GitHub

Weitere Informationen zu diesem Connector finden Sie auf [der entsprechenden Website unter .com](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-cloudera-hive). GitHub

# Amazon Athena Cloudera Impala Connector
<a name="connectors-cloudera-impala"></a>

Der Amazon-Athena-Connector für Cloudera Impala ermöglicht es Athena, SQL-Abfragen auf der [Cloudera Impala](https://docs.cloudera.com/cdw-runtime/cloud/impala-overview/topics/impala-overview.html)-Verteilung auszuführen. Der Connector wandelt Ihre Athena-SQL-Abfragen in die äquivalente Impala-Syntax um.

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

## Voraussetzungen
<a name="connectors-impala-prerequisites"></a>
+ Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Für weitere Informationen siehe [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md) oder [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md).
+ Richten Sie eine VPC und eine Sicherheitsgruppe ein, bevor Sie diesen Konnektor verwenden. Weitere Informationen finden Sie unter [Erstellen Sie eine VPC für einen Datenquellenconnector oder AWS Glue eine Datenquellenverbindung](athena-connectors-vpc-creation.md).

## Einschränkungen
<a name="connectors-cloudera-impala-limitations"></a>
+ 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)](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) im *AWS Lambda -Entwicklerhandbuch.*

## Bedingungen
<a name="connectors-cloudera-impala-terms"></a>

Die folgenden Begriffe beziehen sich auf den Cloudera-Impala-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 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.

## Parameters
<a name="connectors-cloudera-impala-parameters"></a>

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

### Glue Connections (empfohlen)
<a name="connectors-cloudera-impala-gc"></a>

Wir empfehlen, dass Sie einen Cloudera Impala-Connector mithilfe eines Glue-Connections-Objekts konfigurieren. Setzen Sie dazu die `glue_connection` Umgebungsvariable des Cloudera Impala-Connectors 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 CLOUDERAIMPALA
```

**Lambda-Umgebungseigenschaften**
+ **glue\$1connection** – Gibt den Namen der Glue-Connection an, die dem Verbund-Connector zugeordnet ist. 
+ **casing\$1mode** – (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-Verbindungen verwenden, müssen diese AWS Secrets Manager zum Speichern von Anmeldeinformationen verwenden.
Der mit Glue-Connection erstellte Cloudera Impala-Konnektor unterstützt die Verwendung eines Multiplexing-Handlers nicht.
Der mit Glue-Connection erstellte Cloudera Impala-Konnektor unterstützt nur `ConnectionSchemaVersion` 2.

### Legacy-Connections
<a name="connectors-cloudera-impala-legacy"></a>

#### Verbindungszeichenfolge
<a name="connectors-cloudera-impala-connection-string"></a>

Verwenden Sie eine JDBC-Verbindungszeichenfolge im folgenden Format, um eine Verbindung zu einem Impala-Cluster herzustellen.

```
impala://${jdbc_connection_string}
```

#### Verwenden eines Multiplexing-Handlers
<a name="connectors-cloudera-impala-using-a-multiplexing-handler"></a>

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 | ImpalaMuxCompositeHandler | 
| Metadaten-Handler | ImpalaMuxMetadataHandler | 
| Record Handler | ImpalaMuxRecordHandler | 

##### Multiplex-Handler-Parameter
<a name="connectors-cloudera-impala-multiplexing-handler-parameters"></a>


****  

| Parameter | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | Erforderlich Eine Impala-Cluster-Verbindungszeichenfolge für einen Athena-Katalog. Stellen Sie der Umgebungsvariablen den Namen des in Athena verwendeten Katalogs voran. Wenn zum Beispiel der bei Athena registrierte Katalog myimpalacatalog ist, dann lautet der Name der Umgebungsvariablen myimpalacatalog\$1connection\$1string. | 
| default | Erforderlich Die standardmäßige Verbindungszeichenfolge. Diese Zeichenfolge wird verwendet, wenn der Katalog verwendet wird lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Die folgenden Beispieleigenschaften gelten für eine Impala MUX Lambda-Funktion, die zwei Datenbankinstanzen unterstützt: `impala1` (die Standardeinstellung) und `impala2`.


****  

| Eigenschaft | Wert | 
| --- | --- | 
| default | impala://jdbc:impala://some.impala.host.name:21050/?\$1\$1Test/impala1\$1 | 
| impala\$1catalog1\$1connection\$1string | impala://jdbc:impala://someother.impala.host.name:21050/?\$1\$1Test/impala1\$1 | 
| impala\$1catalog2\$1connection\$1string | impala://jdbc:impala://another.impala.host.name:21050/?UID=sample&PWD=sample | 

##### Bereitstellen von Anmeldeinformationen
<a name="connectors-cloudera-impala-providing-credentials"></a>

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 hartcodierten Geheimnissen nach AWS Secrets Manager finden Sie AWS Secrets Manager im *AWS Secrets Manager Benutzerhandbuch* unter [Verschieben von hartcodierten Geheimnissen nach](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html).
+ **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](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) oder einen [VPC-Endpunkt verfügen, um eine Verbindung zu Secrets](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html) Manager herzustellen.

  Sie können den Namen eines Geheimnisses in AWS Secrets Manager Ihre 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, eine Rotation der Anmeldeinformationen zu verwenden AWS Secrets Manager . 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/impala1host}`.

```
impala://jdbc:impala://Impala1host:21050/?...&${Test/impala1host}&...
```

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

```
impala://jdbc:impala://Impala1host:21050/?...&UID=sample2&PWD=sample2&...
```

Derzeit erkennt Cloudera Impala die `UID`- und `PWD`-JDBC-Eigenschaften.

#### Verwenden eines einzelnen Verbindungs-Handlers
<a name="connectors-cloudera-impala-using-a-single-connection-handler"></a>

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


****  

| Handler-Typ | Klasse | 
| --- | --- | 
| Composite Handler | ImpalaCompositeHandler | 
| Metadaten-Handler | ImpalaMetadataHandler | 
| Record Handler | ImpalaRecordHandler | 

##### Parameter für Einzelverbindungs-Handler
<a name="connectors-cloudera-impala-single-connection-handler-parameters"></a>


****  

| Parameter | Description | 
| --- | --- | 
| 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 Impala-Instance, die von einer Lambda-Funktion unterstützt wird.


****  

| Eigenschaft | Wert | 
| --- | --- | 
| default | impala://jdbc:impala://Impala1host:21050/?secret=\$1\$1Test/impala1host\$1 | 

#### Überlauf-Parameter
<a name="connectors-cloudera-impala-spill-parameters"></a>

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 | Description | 
| --- | --- | 
| spill\$1bucket | Erforderlich Überlauf-Bucket-Name. | 
| spill\$1prefix | Erforderlich Schlüssel-Prefix für den Überlauf-Bucket. | 
| spill\$1put\$1request\$1headers | (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. \$1"x-amz-server-side-encryption" : "AES256"\$1). Weitere mögliche Header finden Sie [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)in der Amazon Simple Storage Service API-Referenz. | 

## Datentypunterstützung
<a name="connectors-cloudera-impala-data-type-support"></a>

Die folgende Tabelle zeigt die entsprechenden Datentypen für JDBC, Cloudera Impala und Arrow.


****  

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

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

## Partitionen und Splits
<a name="connectors-cloudera-impala-partitions-and-splits"></a>

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
<a name="connectors-cloudera-impala-performance"></a>

Cloudera Impala unterstützt statische Partitionen. Der Athena-Cloudera-Impala-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-Impala-Konnektor ist aufgrund der Gleichzeitigkeit widerstandsfähig gegenüber Drosselung.

Der Athena-Cloudera-Impala-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
<a name="connectors-impala-performance-limit-clauses"></a>

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
<a name="connectors-impala-performance-predicates"></a>

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

Die folgenden Operatoren des Athena-Cloudera-Impala-Konnektors unterstützen Prädikat-Pushdown:
+ **Boolean: **UND, ODER, NICHT
+ **Gleichheit: **GLEICH, NICHT-GLEICH, WENIGER\$1ALS, WENIGER\$1ODER-GLEICH, GRÖSSER\$1ALS, GRÖSSER\$1ODER-GLEICH, IST\$1UNTERSCHIEDEN VON, NULL\$1WENN, IST\$1NULL
+ **Arithmetik: **ADDIEREN, SUBTRAHIEREN, MULTIPLIZIEREN, DIVIDIEREN, MODULIEREN, NEGIEREN
+ **Andere: WIE\$1MUSTER, IN**

### Beispiel für einen kombinierten Pushdown
<a name="connectors-impala-performance-pushdown-example"></a>

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
<a name="connectors-impala-passthrough-queries"></a>

[Der Cloudera Impala-Connector unterstützt Pass-Through-Abfragen.](federated-query-passthrough.md) Pass-Through-Abfragen verwenden eine Tabellenfunktion, um Ihre vollständige Abfrage zur Ausführung an die Datenquelle weiterzuleiten.

Um Pass-Through-Abfragen mit Cloudera Impala 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 Impala 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
<a name="connectors-impala-license-information"></a>

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](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-cloudera-impala/pom.xml) für diesen Connector und stimmen den Bedingungen der jeweiligen Drittanbieterlizenzen zu, die in der Datei [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-cloudera-impala/LICENSE.txt) auf GitHub .com enthalten sind.

## Weitere Ressourcen
<a name="connectors-impala-additional-resources"></a>

Die neuesten Informationen zur JDBC-Treiberversion finden Sie in der Datei [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-cloudera-impala/pom.xml) für den Cloudera Impala-Connector auf .com. GitHub

Weitere Informationen zu diesem Connector finden Sie auf [der](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-cloudera-impala) entsprechenden Website unter .com. GitHub

# Amazon Athena Athena-Anschluss CloudWatch
<a name="connectors-cloudwatch"></a>

Der Amazon CloudWatch Athena-Connector ermöglicht Amazon Athena die Kommunikation mit, CloudWatch sodass Sie Ihre Protokolldaten mit SQL abfragen können.

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

Der Konnektor ordnet Ihre LogGroups AS-Schemas und jedes Schema LogStream als Tabelle zu. Der Konnektor ordnet auch eine spezielle `all_log_streams` Ansicht zu, die alle LogStreams in der LogGroup enthält. In dieser Ansicht können Sie alle Protokolle in einem LogGroup auf einmal abfragen, anstatt sie LogStream einzeln zu durchsuchen.

## Voraussetzungen
<a name="connectors-cloudwatch-prerequisites"></a>
+ Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Für weitere Informationen siehe [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md) oder [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md).

## Parameters
<a name="connectors-cloudwatch-parameters"></a>

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

### Glue Connections (empfohlen)
<a name="connectors-cloudwatch-gc"></a>

Es wird empfohlen, einen CloudWatch Konnektor mithilfe eines Glue-Verbindungsobjekts zu konfigurieren. Setzen Sie dazu die `glue_connection` Umgebungsvariable des CloudWatch Connectors Lambda auf den Namen der zu verwendenden Glue-Verbindung.

**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 CLOUDWATCH
```

**Lambda-Umgebungseigenschaften**
+ **glue\$1connection** – Gibt den Namen der Glue-Connection an, die dem Verbund-Connector zugeordnet ist. 

**Anmerkung**  
Alle Konnektoren, die Glue-Verbindungen verwenden, müssen diese AWS Secrets Manager zum Speichern von Anmeldeinformationen verwenden.
Der mit Glue-Verbindungen erstellte CloudWatch Konnektor unterstützt die Verwendung eines Multiplexing-Handlers nicht.
Der mit Glue-Verbindungen erstellte CloudWatch Konnektor unterstützt nur `ConnectionSchemaVersion` 2.

### Legacy-Connections
<a name="connectors-cloudwatch-legacy"></a>
+ **spill\$1bucket** – Gibt den Amazon S3-Bucket für Daten an, die die Lambda-Funktionsgrenzen überschreiten.
+ **spill\$1prefix** – (Optional) Ist standardmäßig ein Unterordner im angegebenen `spill_bucket` genannt `athena-federation-spill`. Wir empfehlen Ihnen, einen Amazon-S3-[Speicher-Lebenszyklus](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) an dieser Stelle zu konfigurieren, um die Überlaufe zu löschen, die älter als eine festgelegte Anzahl von Tagen oder Stunden sind.
+ **spill\$1put\$1request\$1headers** – (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 [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)in der *Amazon Simple Storage Service API-Referenz.*
+ **kms\$1key\$1id** – (Optional) Standardmäßig werden alle Daten, die an Amazon S3 gesendet 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, wie`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, können Sie eine ID einer Verschlüsselung angeben.
+ **disable\$1spill\$1encryption** – (Optional) Bei Einstellung auf `True`, wird die Spill-Verschlüsselung deaktiviert. Die Standardeinstellung ist `False`, sodass Daten, die an S3 übertrragen werden, mit AES-GCM verschlüsselt werden - entweder mit einem zufällig generierten Schlüssel oder mit KMS zum Generieren von Schlüsseln. Das Deaktivieren der Überlauf-Verschlüsselung kann die Leistung verbessern, insbesondere wenn Ihr Überlauf-Standort eine [serverseitige Verschlüsselung](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) verwendet.

Der Connector unterstützt auch [AIMD-Überlastungskontrolle](https://en.wikipedia.org/wiki/Additive_increase/multiplicative_decrease) für die Verarbeitung von Drosselungsereignissen CloudWatch über das [Amazon Athena](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-federation-sdk) Query Federation SDK-Konstrukt. `ThrottlingInvoker` Sie können das Standarddrosselungsverhalten optimieren, indem Sie eine der folgenden optionalen Umgebungsvariablen festlegen:
+ **throttle\$1initial\$1delay\$1ms** – Die erste Aufrufverzögerung, die nach dem ersten Stauereignis angewendet wurde. Der Standardwert beträgt 10 Millisekunden.
+ **throttle\$1max\$1delay\$1ms** – Die maximale Verzögerung zwischen Aufrufen. Sie können TPS ableiten, indem Sie es in 1000 ms teilen. Der Standardwert beträgt 1 000 Millisekunden.
+ **throttle\$1decrease\$1factor** – Der Faktor, um den Athena die Aufrufrate reduziert. Der Standardwert ist 0,5.
+ **throttle\$1increase\$1ms** – Die Geschwindigkeit, mit der Athena die Aufrufverzögerung verringert. Der Standardwert beträgt 10 Millisekunden.

## Datenbanken und Tabellen
<a name="connectors-cloudwatch-databases-and-tables"></a>

Der CloudWatch Athena-Konnektor ordnet Ihre LogGroups AS-Schemas (d. h. Datenbanken) und jeweils LogStream als Tabelle zu. Der Konnektor ordnet auch eine spezielle `all_log_streams` Ansicht zu, die alle LogStreams in der enthält. LogGroup In dieser Ansicht können Sie alle Protokolle in einem LogGroup auf einmal abfragen, anstatt sie LogStream einzeln zu durchsuchen.

Jede vom CloudWatch Athena-Konnektor zugeordnete Tabelle hat das folgende Schema. Dieses Schema entspricht den von Logs bereitgestellten CloudWatch Feldern.
+ **log\$1stream** — Ein Wert`VARCHAR`, der den Namen des Objekts enthält, aus dem LogStream die Zeile stammt.
+ **Zeit** – Ein `INT64`, das die Epochenzeit enthält, zu der die Protokollzeile generiert wurde.
+ **Botschaft** – Ein `VARCHAR`, das die Protokollnachricht enthält.

**Beispiele**  
Das folgende Beispiel zeigt, wie eine `SELECT` Abfrage für ein bestimmtes Objekt ausgeführt wird. LogStream

```
SELECT * 
FROM "lambda:cloudwatch_connector_lambda_name"."log_group_path"."log_stream_name" 
LIMIT 100
```

Das folgende Beispiel zeigt, wie die `all_log_streams` Ansicht verwendet wird, um eine Abfrage für alle LogStreams in einem bestimmten Bereich durchzuführen LogGroup. 

```
SELECT * 
FROM "lambda:cloudwatch_connector_lambda_name"."log_group_path"."all_log_streams" 
LIMIT 100
```

## Erforderliche Berechtigungen
<a name="connectors-cloudwatch-required-permissions"></a>

Ausführliche Informationen zu den für diesen Konnektor erforderlichen IAM-Richtlinien finden Sie im `Policies`-Abschnitt der [athena-cloudwatch.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-cloudwatch/athena-cloudwatch.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.
+ **CloudWatch Lesen/Schreiben von Protokollen** — Der Connector verwendet diese Berechtigung, um Ihre Protokolldaten zu lesen und seine Diagnoseprotokolle zu schreiben.

## Leistung
<a name="connectors-cloudwatch-performance"></a>

Der CloudWatch Athena-Konnektor versucht, Abfragen zu optimieren, CloudWatch indem er Scans der für Ihre Abfrage erforderlichen Protokollstreams parallelisiert. Für bestimmte Zeitraumfilter wird der Prädikat-Pushdown sowohl innerhalb der Lambda-Funktion als auch innerhalb von Logs ausgeführt. CloudWatch 

Verwenden Sie für Ihre Protokollgruppennamen und Protokollstreamnamen nur Kleinbuchstaben, um eine optimale Leistung zu erzielen. Bei der Verwendung gemischter Groß- und Kleinschreibung führt der Konnektor eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung durch, die rechenintensiver ist.

**Anmerkung**  
 Der CloudWatch Connector unterstützt keine Datenbanknamen in Großbuchstaben. 

## Pass-Through-Abfragen
<a name="connectors-cloudwatch-passthrough-queries"></a>

Der CloudWatch Connector unterstützt [Passthrough-Abfragen](federated-query-passthrough.md), die die [CloudWatch Logs Insights-Abfragesyntax](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html) verwenden. Weitere Informationen zu CloudWatch Logs Insights finden Sie unter [Analysieren von Protokolldaten mit CloudWatch Logs Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html) im *Amazon CloudWatch Logs-Benutzerhandbuch*.

Verwenden Sie die folgende Syntax CloudWatch, um Passthrough-Abfragen mit zu erstellen:

```
SELECT * FROM TABLE(
        system.query(
            STARTTIME => 'start_time',
            ENDTIME => 'end_time',
            QUERYSTRING => 'query_string',
            LOGGROUPNAMES => 'log_group-names',
            LIMIT => 'max_number_of_results'
        ))
```

In der folgenden CloudWatch Passthrough-Beispielabfrage wird nach dem `duration` Feld gefiltert, wenn es nicht 1000 entspricht.

```
SELECT * FROM TABLE(
        system.query(
            STARTTIME => '1710918615308',
            ENDTIME => '1710918615972',
            QUERYSTRING => 'fields @duration | filter @duration != 1000',
            LOGGROUPNAMES => '/aws/lambda/cloudwatch-test-1',
            LIMIT => '2'
            ))
```

## Lizenzinformationen
<a name="connectors-cloudwatch-license-information"></a>

Das Amazon Athena CloudWatch Connector-Projekt ist unter der [Apache-2.0-Lizenz](https://www.apache.org/licenses/LICENSE-2.0.html) lizenziert.

## Weitere Ressourcen
<a name="connectors-cloudwatch-additional-resources"></a>

Weitere Informationen zu diesem Connector finden Sie auf [der entsprechenden Website unter .com](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-cloudwatch). GitHub

# Konnektor für Amazon Athena CloudWatch Metrics
<a name="connectors-cwmetrics"></a>

Der Amazon Athena CloudWatch Metrics Connector ermöglicht Amazon Athena, CloudWatch Metrics-Daten mit SQL abzufragen.

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

Informationen zum Veröffentlichen CloudWatch von Abfragemetriken in Athena selbst finden Sie unter[Verwenden Sie CloudWatch und EventBridge , um Abfragen zu überwachen und die Kosten zu kontrollieren](workgroups-control-limits.md).

## Voraussetzungen
<a name="connectors-cwmetrics-prerequisites"></a>
+ Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Für weitere Informationen siehe [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md) oder [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md).

## Parameters
<a name="connectors-cwmetrics-parameters"></a>

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

### Glue Connections (empfohlen)
<a name="connectors-cwmetrics-gc"></a>

Es wird empfohlen, einen CloudWatch Metrics-Konnektor mithilfe eines Glue-Verbindungsobjekts zu konfigurieren. Setzen Sie dazu die `glue_connection` Umgebungsvariable des CloudWatch Metrics-Konnektors Lambda auf den Namen der zu verwendenden Glue-Verbindung.

**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 CLOUDWATCHMETRICS
```

**Lambda-Umgebungseigenschaften**
+ **glue\$1connection** – Gibt den Namen der Glue-Connection an, die dem Verbund-Connector zugeordnet ist. 

**Anmerkung**  
Alle Konnektoren, die Glue-Verbindungen verwenden, müssen diese AWS Secrets Manager zum Speichern von Anmeldeinformationen verwenden.
Der mit Glue-Verbindungen erstellte CloudWatch Metrics-Konnektor unterstützt die Verwendung eines Multiplexing-Handlers nicht.
Der mit Glue-Verbindungen erstellte CloudWatch Metrics-Konnektor unterstützt nur `ConnectionSchemaVersion` 2.

### Legacy-Connections
<a name="connectors-cwmetrics-legacy"></a>
+ **spill\$1bucket** – Gibt den Amazon S3-Bucket für Daten an, die die Lambda-Funktionsgrenzen überschreiten.
+ **spill\$1prefix** – (Optional) Ist standardmäßig ein Unterordner im angegebenen `spill_bucket` genannt `athena-federation-spill`. Wir empfehlen Ihnen, einen Amazon-S3-[Speicher-Lebenszyklus](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) an dieser Stelle zu konfigurieren, um die Überlaufe zu löschen, die älter als eine festgelegte Anzahl von Tagen oder Stunden sind.
+ **spill\$1put\$1request\$1headers** – (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 [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)in der *Amazon Simple Storage Service API-Referenz.*
+ **kms\$1key\$1id** – (Optional) Standardmäßig werden alle Daten, die an Amazon S3 gesendet 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, wie`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, können Sie eine ID einer Verschlüsselung angeben.
+ **disable\$1spill\$1encryption** – (Optional) Bei Einstellung auf `True`, wird die Spill-Verschlüsselung deaktiviert. Die Standardeinstellung ist `False`, sodass Daten, die an S3 übertrragen werden, mit AES-GCM verschlüsselt werden - entweder mit einem zufällig generierten Schlüssel oder mit KMS zum Generieren von Schlüsseln. Das Deaktivieren der Überlauf-Verschlüsselung kann die Leistung verbessern, insbesondere wenn Ihr Überlauf-Standort eine [serverseitige Verschlüsselung](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) verwendet.

Der Connector unterstützt auch [AIMD-Überlastungskontrolle](https://en.wikipedia.org/wiki/Additive_increase/multiplicative_decrease) für die Verarbeitung von Drosselungsereignissen CloudWatch über das [Amazon Athena](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-federation-sdk) Query Federation SDK-Konstrukt. `ThrottlingInvoker` Sie können das Standarddrosselungsverhalten optimieren, indem Sie eine der folgenden optionalen Umgebungsvariablen festlegen:
+ **throttle\$1initial\$1delay\$1ms** – Die erste Aufrufverzögerung, die nach dem ersten Stauereignis angewendet wurde. Der Standardwert beträgt 10 Millisekunden.
+ **throttle\$1max\$1delay\$1ms** – Die maximale Verzögerung zwischen Aufrufen. Sie können TPS ableiten, indem Sie es in 1000 ms teilen. Der Standardwert beträgt 1 000 Millisekunden.
+ **throttle\$1decrease\$1factor** – Der Faktor, um den Athena die Aufrufrate reduziert. Der Standardwert ist 0,5.
+ **throttle\$1increase\$1ms** – Die Geschwindigkeit, mit der Athena die Aufrufverzögerung verringert. Der Standardwert beträgt 10 Millisekunden.

## Datenbanken und Tabellen
<a name="connectors-cwmetrics-databases-and-tables"></a>

Der Athena CloudWatch Metrics-Konnektor ordnet Ihre Namespaces, Dimensionen, Metriken und Metrikwerte in zwei Tabellen in einem einzigen Schema namens zu. `default`

### Die Metriktabelle
<a name="connectors-cwmetrics-the-metrics-table"></a>

Die`metrics`-Tabelle enthält die verfügbaren Metriken, die durch eine Kombination aus Namespace, Set und Name eindeutig definiert sind. Die `metrics`-Tabelle enthält die folgenden Spalten.
+ **namespace** – Ein `VARCHAR`, der den Namespace enthält.
+ **metric\$1name** – Ein `VARCHAR`, der den Metriknamen enthält.
+ **dimensions** – Ein `LIST` von `STRUCT`-Objekten bestehend aus `dim_name (VARCHAR)` und `dim_value (VARCHAR)`.
+ **statistic** – Ein `LIST` von `VARCH`-Statistiken (zum Beispiel `p90`, `AVERAGE`,...) verfügbar für die Metrik.

### Die Tabelle metric\$1samples
<a name="connectors-cwmetrics-the-metric_samples-table"></a>

Die `metric_samples`-Tabelle enthält die verfügbaren metrischen Stichproben für jede Metrik in der `metrics`-Tabelle. Die `metric_samples`-Tabelle enthält die folgenden Spalten.
+ **namespace** – Ein `VARCHAR`, der den Namespace enthält.
+ **metric\$1name** – Ein `VARCHAR`, der den Metriknamen enthält.
+ **dimensions** – Ein `LIST` von `STRUCT`-Objekten bestehend aus `dim_name (VARCHAR)` und `dim_value (VARCHAR)`.
+ **dim\$1name** – Ein `VARCHAR`-Komfortfeld, das Sie verwenden können, um einfach nach einem einzelnen Dimensionsnamen zu filtern.
+ **dim\$1value** – Ein `VARCHAR`-Komfortfeld, das Sie verwenden können, um einfach nach einem einzelnen Dimensionswert zu filtern.
+ **period** – Ein `INT`-Feld, das die „Periode“ der Metrik in Sekunden darstellt (z. B. eine 60-Sekunden-Metrik).
+ **timestamp** – Ein `BIGINT`-Feld, das die Zeit in Sekunden darstellt, für die die metrische Stichprobe gilt.
+ **value** – Ein `FLOAT8`-Feld, das den Wert der Stichprobe enthält.
+ **Statistik** – Ein `VARCHAR`, der den Statistiktyp der Stichprobe enthält (z. B. `AVERAGE` oder `p90`).

## Erforderliche Berechtigungen
<a name="connectors-cwmetrics-required-permissions"></a>

[Vollständige Informationen zu den IAM-Richtlinien, die für diesen Connector erforderlich sind, finden Sie im `Policies` Abschnitt der .yaml-Datei. athena-cloudwatch-metrics](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-cloudwatch-metrics/athena-cloudwatch-metrics.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.
+ **CloudWatch Metriken ReadOnly** — Der Connector verwendet diese Berechtigung, um Ihre Metrikdaten abzufragen.
+ **CloudWatch Logs Write** — Der Connector verwendet diesen Zugriff, um seine Diagnoseprotokolle zu schreiben.

## Leistung
<a name="connectors-cwmetrics-performance"></a>

Der Athena CloudWatch Metrics-Konnektor versucht, Abfragen anhand von CloudWatch Metrics zu optimieren, indem er Scans der für Ihre Abfrage erforderlichen Log-Streams parallelisiert. Für bestimmte Zeiträume, Metrik-, Namespace- und Dimensionsfilter wird der Prädikat-Pushdown sowohl innerhalb der Lambda-Funktion als auch in Logs ausgeführt. CloudWatch 

## Lizenzinformationen
<a name="connectors-cwmetrics-license-information"></a>

Das Amazon Athena CloudWatch Metrics Connector-Projekt ist unter der [Apache-2.0-Lizenz](https://www.apache.org/licenses/LICENSE-2.0.html) lizenziert.

## Weitere Ressourcen
<a name="connectors-cwmetrics-additional-resources"></a>

Weitere Informationen zu diesem Connector finden Sie auf [der entsprechenden Website unter .com](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-cloudwatch-metrics). GitHub

# Amazon Athena AWS CMDB-Anschluss
<a name="connectors-cmdb"></a>

Der Amazon Athena AWS CMDB-Connector ermöglicht Athena die Kommunikation mit verschiedenen AWS Diensten, sodass Sie diese mit SQL abfragen können.

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
<a name="connectors-cmdb-prerequisites"></a>
+ Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Für weitere Informationen siehe [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md) oder [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md).

## Parameters
<a name="connectors-cmdb-parameters"></a>

Verwenden Sie die Parameter in diesem Abschnitt, um den CMDB-Connector zu konfigurieren. AWS 

### Glue Connections (empfohlen)
<a name="connectors-cmdb-gc"></a>

Es wird empfohlen, einen AWS CMDB-Connector mithilfe eines Glue-Verbindungsobjekts zu konfigurieren. Setzen Sie dazu die `glue_connection` Umgebungsvariable des AWS CMDB-Konnektors Lambda auf den Namen der zu verwendenden Glue-Verbindung.

**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 CMDB
```

**Lambda-Umgebungseigenschaften**

**glue\$1connection** – Gibt den Namen der Glue-Connection an, die dem Verbund-Connector zugeordnet ist. 

**Anmerkung**  
Alle Konnektoren, die Glue-Verbindungen verwenden, müssen diese AWS Secrets Manager zum Speichern von Anmeldeinformationen verwenden.
Der mit Glue-Verbindungen erstellte AWS CMDB-Konnektor unterstützt die Verwendung eines Multiplexing-Handlers nicht.
Der mit Glue-Verbindungen erstellte AWS CMDB-Connector unterstützt nur 2. `ConnectionSchemaVersion`

### Legacy-Connections
<a name="connectors-cmdb-legacy"></a>

**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-Datenquellenkonnektoren, die ohne eine zugehörige Glue-Connection erstellt wurden. Verwenden Sie die folgenden Parameter nur, wenn Sie eine frühere Version eines Athena-Datenquellenkonnektors [manuell bereitstellen](connect-data-source-serverless-app-repo.md) oder wenn die `glue_connection`-Umgebungseigenschaft nicht angegeben ist.

**Lambda-Umgebungseigenschaften**
+ **spill\$1bucket** – Gibt den Amazon S3-Bucket für Daten an, die die Lambda-Funktionsgrenzen überschreiten.
+ **spill\$1prefix** – (Optional) Ist standardmäßig ein Unterordner im angegebenen `spill_bucket` genannt `athena-federation-spill`. Wir empfehlen Ihnen, einen Amazon-S3-[Speicher-Lebenszyklus](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) an dieser Stelle zu konfigurieren, um die Überlaufe zu löschen, die älter als eine festgelegte Anzahl von Tagen oder Stunden sind.
+ **spill\$1put\$1request\$1headers** – (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 [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)in der *Amazon Simple Storage Service API-Referenz.*
+ **kms\$1key\$1id** – (Optional) Standardmäßig werden alle Daten, die an Amazon S3 gesendet 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, wie`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, können Sie eine ID einer Verschlüsselung angeben.
+ **disable\$1spill\$1encryption** – (Optional) Bei Einstellung auf `True`, wird die Spill-Verschlüsselung deaktiviert. Die Standardeinstellung ist `False`, sodass Daten, die an S3 übertrragen werden, mit AES-GCM verschlüsselt werden - entweder mit einem zufällig generierten Schlüssel oder mit KMS zum Generieren von Schlüsseln. Das Deaktivieren der Überlauf-Verschlüsselung kann die Leistung verbessern, insbesondere wenn Ihr Überlauf-Standort eine [serverseitige Verschlüsselung](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) verwendet.
+ **default\$1ec2\$1image\$1owner** [— (Optional) Wenn diese Option gesetzt ist, steuert sie den standardmäßigen EC2 Amazon-Image-Besitzer, der Amazon Machine Images (AMI) filtert.](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html) Wenn Sie diesen Wert nicht festlegen und Ihre Abfrage für die EC2 Bildertabelle keinen Filter für den Eigentümer enthält, enthalten Ihre Ergebnisse alle öffentlichen Bilder.

## Datenbanken und Tabellen
<a name="connectors-cmdb-databases-and-tables"></a>

Der Athena AWS CMDB-Connector stellt die folgenden Datenbanken und Tabellen für die Abfrage Ihres Ressourceninventars zur Verfügung. AWS Um weitere Informationen zu den in den einzelnen Tabellen verfügbaren Spalten zu erhalten, führen Sie eine `DESCRIBE database.table`-Anweisung mithilfe der Athena-Konsole oder -API aus.
+ **ec2** — Diese Datenbank enthält EC2 Amazon-bezogene Ressourcen, darunter die folgenden.
+ **ebs\$1volumes** – Enthält Details Ihrer Amazon EBS-Volumes.
+ **ec2\$1instances** — Enthält Details zu Ihren Instances. EC2 
+ **ec2\$1images** — Enthält Details zu Ihren Instance-Images. EC2 
+ **routing\$1tables** – Enthält Details zu Ihren VPC-Routing-Tabellen.
+ **security\$1groups** – Enthält Details zu Ihren Sicherheitsgruppen.
+ **subnets** – Enthält Details zu Ihren VPC-Subnetzen.
+ **vpcs** — Enthält Details zu Ihrem. VPCs
+ **emr** – Diese Datenbank enthält Amazon EMR-bezogene Ressourcen, einschließlich der Folgenden.
+ **emr\$1cluster** – Enthält Details zu Ihren EMR-Clustern.
+ **rds** – Diese Datenbank enthält Amazon RDS-bezogene Ressourcen, einschließlich der Folgenden.
+ **rds\$1instances** – Enthält Details zu Ihren RDS-Instances.
+ **S3** – Diese Datenbank enthält RDS-bezogene Ressourcen, einschließlich der Folgenden.
+ **buckets** – Enthält Details Ihrer Amazon-S3-Buckets.
+ **objects** – Enthält Details zu Ihren Amazon-S3-Objekten, ausgenommen deren Inhalt.

## Erforderliche Berechtigungen
<a name="connectors-cmdb-required-permissions"></a>

Vollständige Informationen zu den IAM-Richtlinien, die für diesen Connector erforderlich sind, finden Sie im `Policies` Abschnitt der [athena-aws-cmdb.yaml-Datei](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-aws-cmdb/athena-aws-cmdb.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.
+ **S3 List** – Der Konnektor verwendet diese Berechtigung, um Ihre Amazon-S3-Buckets und -Objekte aufzulisten.
+ **EC2 Beschreiben** — Der Connector verwendet diese Berechtigung, um Ressourcen wie Ihre EC2 Amazon-Instances, Sicherheitsgruppen und Amazon EBS-Volumes zu beschreiben. VPCs
+ **EMR Describe / List** – Der Konnektor verwendet diese Berechtigung, um Ihre EMR-Cluster zu beschreiben.
+ **RDS Describe** – Der Konnektor verwendet diese Berechtigung, um Ihre RDS-Instanzen zu beschreiben.

## Leistung
<a name="connectors-cmdb-performance"></a>

Derzeit unterstützt der Athena AWS CMDB-Connector keine parallel Scans. Der Prädikat-Pushdown wird innerhalb der Lambda-Funktion ausgeführt. Wenn möglich, werden Teilprädikate an die abgefragten Dienste übertragen. Beispielsweise ruft eine Abfrage nach den Details einer bestimmten EC2 Amazon-Instance die EC2 API mit der spezifischen Instance-ID auf, um eine gezielte Beschreibungsoperation auszuführen.

## Lizenzinformationen
<a name="connectors-cmdb-license-information"></a>

[Das Amazon Athena AWS CMDB-Connector-Projekt ist unter der Apache-2.0-Lizenz lizenziert.](https://www.apache.org/licenses/LICENSE-2.0.html)

## Weitere Ressourcen
<a name="connectors-cmdb-additional-resources"></a>

[Weitere Informationen zu diesem Connector finden Sie auf der entsprechenden Website unter .com.](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-aws-cmdb) GitHub

# Amazon-Athena-IBM-Db2-Konnektor
<a name="connectors-ibm-db2"></a>

Der Amazon-Athena-Konnektor für Db2 ermöglicht es Amazon Athena, SQL-Abfragen auf Ihren IBM-Db2-Datenbanken mit JDBC auszuführen.

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
<a name="connectors-dbtwo-prerequisites"></a>
+ Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Für weitere Informationen siehe [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md) oder [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md).
+ Richten Sie eine VPC und eine Sicherheitsgruppe ein, bevor Sie diesen Konnektor verwenden. Weitere Informationen finden Sie unter [Erstellen Sie eine VPC für einen Datenquellenconnector oder AWS Glue eine Datenquellenverbindung](athena-connectors-vpc-creation.md).

## Einschränkungen
<a name="connectors-ibm-db2-limitations"></a>
+ 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)](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) im *AWS Lambda -Entwicklerhandbuch.*
+ Datums- und Zeitstempeldatentypen in Filterbedingungen müssen in geeignete Datentypen umgewandelt werden.

## Bedingungen
<a name="connectors-ibm-db2-terms"></a>

Die folgenden Begriffe beziehen sich auf den Db2-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 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.

## Parameters
<a name="connectors-ibm-db2-parameters"></a>

Verwenden Sie die Parameter in diesem Abschnitt, um den Db2-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](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) abweichen. Verwenden Sie ab dem 3. Dezember 2024 die folgenden Parameter nur, wenn Sie eine frühere Version eines Athena-Datenquellen-Connectors [manuell bereitstellen](connect-data-source-serverless-app-repo.md).

### Glue Connections (empfohlen)
<a name="connectors-ibm-db2-gc"></a>

Wir empfehlen, dass Sie einen Db2-Connector mithilfe eines Glue-Connections-Objekts konfigurieren. Setzen Sie dazu die `glue_connection`-Umgebungsvariable des Db2-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 DB2
```

**Lambda-Umgebungseigenschaften**
+ **glue\$1connection** – Gibt den Namen der Glue-Connection an, die dem Verbund-Connector zugeordnet ist. 
+ **casing\$1mode** – (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-Verbindungen verwenden, müssen diese AWS Secrets Manager zum Speichern von Anmeldeinformationen verwenden.
Der mit Glue-Connection erstellte Db2-Connector unterstützt die Verwendung eines Multiplexing-Handlers nicht.
Der mit Glue-Connection erstellte Db2-Connector unterstützt nur `ConnectionSchemaVersion` 2.

### Legacy-Connections
<a name="connectors-ibm-db2-legacy"></a>

#### Verbindungszeichenfolge
<a name="connectors-ibm-db2-connection-string"></a>

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

```
dbtwo://${jdbc_connection_string}
```

#### Verwenden eines Multiplexing-Handlers
<a name="connectors-ibm-db2-using-a-multiplexing-handler"></a>

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 | Db2MuxCompositeHandler | 
| Metadaten-Handler | Db2MuxMetadataHandler | 
| Record Handler | Db2MuxRecordHandler | 

##### Multiplex-Handler-Parameter
<a name="connectors-ibm-db2-multiplexing-handler-parameters"></a>


****  

| Parameter | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | 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 mydbtwocatalog ist, dann lautet der Name der Umgebungsvariablen mydbtwocatalog\$1connection\$1string. | 
| default | Erforderlich Die standardmäßige Verbindungszeichenfolge. Diese Zeichenfolge wird verwendet, wenn der Katalog verwendet wird lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Die folgenden Beispieleigenschaften gelten für eine Db2-MUX-Lambda-Funktion, die zwei Datenbank-Instances unterstützt: `dbtwo1` (die Standardeinstellung) und `dbtwo2`.


****  

| Eigenschaft | Wert | 
| --- | --- | 
| default | dbtwo://jdbc:db2://dbtwo1.hostname:port/database\$1name:\$1\$1secret1\$1name\$1 | 
| dbtwo\$1catalog1\$1connection\$1string | dbtwo://jdbc:db2://dbtwo1.hostname:port/database\$1name:\$1\$1secret1\$1name\$1 | 
| dbtwo\$1catalog2\$1connection\$1string | dbtwo://jdbc:db2://dbtwo2.hostname:port/database\$1name:\$1\$1secret2\$1name\$1 | 

##### Bereitstellen von Anmeldeinformationen
<a name="connectors-ibm-db2-providing-credentials"></a>

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 hartcodierten Geheimnissen nach AWS Secrets Manager finden Sie AWS Secrets Manager im *AWS Secrets Manager Benutzerhandbuch* unter [Verschieben von hartcodierten Geheimnissen nach](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html).
+ **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](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) oder einen [VPC-Endpunkt verfügen, um eine Verbindung zu Secrets](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html) Manager herzustellen.

  Sie können den Namen eines Geheimnisses in AWS Secrets Manager Ihre 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, eine Rotation der Anmeldeinformationen zu verwenden AWS Secrets Manager . 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 `${secret_name}`.

```
dbtwo://jdbc:db2://hostname:port/database_name:${secret_name}
```

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

```
dbtwo://jdbc:db2://hostname:port/database_name:user=user_name;password=password;
```

#### Verwenden eines einzelnen Verbindungs-Handlers
<a name="connectors-ibm-db2-using-a-single-connection-handler"></a>

Sie können die folgenden Einzelverbindungs-Metadaten und Datensatz-Handler verwenden, um eine Verbindung zu einer einzelnen Db2-Instance herzustellen.


****  

| Handler-Typ | Klasse | 
| --- | --- | 
| Composite Handler | Db2CompositeHandler | 
| Metadaten-Handler | Db2MetadataHandler | 
| Record Handler | Db2RecordHandler | 

##### Parameter für Einzelverbindungs-Handler
<a name="connectors-ibm-db2-single-connection-handler-parameters"></a>


****  

| Parameter | Description | 
| --- | --- | 
| 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 Db2-Instance, die von einer Lambda-Funktion unterstützt wird.


****  

| Eigenschaft | Wert | 
| --- | --- | 
| default | dbtwo: //jdbc:db2: //hostname:port/: \$1 \$1secret\$1name\$1 database\$1name  | 

#### Überlauf-Parameter
<a name="connectors-ibm-db2-spill-parameters"></a>

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 | Description | 
| --- | --- | 
| spill\$1bucket | Erforderlich Überlauf-Bucket-Name. | 
| spill\$1prefix | Erforderlich Schlüssel-Prefix für den Überlauf-Bucket. | 
| spill\$1put\$1request\$1headers | (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. \$1"x-amz-server-side-encryption" : "AES256"\$1). Weitere mögliche Header finden Sie [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)in der Amazon Simple Storage Service API-Referenz. | 

## Datentypunterstützung
<a name="connectors-ibm-db2-data-type-support"></a>

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


****  

| Db2 | Arrow | 
| --- | --- | 
| CHAR | VARCHAR | 
| VARCHAR | VARCHAR | 
| DATE | DATEDAY | 
| TIME | VARCHAR | 
| TIMESTAMP (ZEITSTEMPEL) | DATEMILLI | 
| DATETIME | DATEMILLI | 
| BOOLEAN | BOOL | 
| SMALLINT | SMALLINT | 
| INTEGER | INT | 
| BIGINT | BIGINT | 
| DECIMAL | DECIMAL | 
| REAL | FLOAT8 | 
| DOUBLE | FLOAT8 | 
| DECFLOAT | FLOAT8 | 

## Partitionen und Splits
<a name="connectors-ibm-db2-partitions-and-splits"></a>

Eine Partition wird durch eine oder mehrere Partitionsspalte(n) vom Typ `varchar` dargestellt. Der Db2-Konnektor erstellt Partitionen mithilfe der folgenden Organisationsschemas.
+ Nach Hash verteilen
+ Nach Bereich partitionieren
+ Nach Dimensionen organisieren

Der Konnektor ruft Partitionsdetails wie die Anzahl der Partitionen und den Spaltennamen aus einer oder mehreren Db2-Metadatentabellen ab. Splits werden basierend auf der Anzahl der identifizierten Partitionen erstellt. 

## Leistung
<a name="connectors-ibm-db2-performance"></a>

Der Athena-Db2-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
<a name="connectors-dbtwo-performance-limit-clauses"></a>

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
<a name="connectors-dbtwo-performance-predicates"></a>

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

Die folgenden Athena-Db2-Konnektor-Operatoren unterstützen Prädikat-Pushdown:
+ **Boolean: **UND, ODER, NICHT
+ **Gleichheit:**GLEICH, NICHT\$1GLEICH, WENIGER\$1ALS, WENIGER\$1ODER\$1GLEICH, GRÖSSER\$1ALS, GRÖSSER\$1ODER\$1GLEICH, IST\$1UNTERSCHIEDLICH\$1VON, IST\$1NULL
+ **Arithmetik: **ADDIEREN, SUBTRAHIEREN, MULTIPLIZIEREN, DIVIDIEREN, MODULIEREN, NEGIEREN
+ **Andere: WIE\$1MUSTER, IN**

### Beispiel für einen kombinierten Pushdown
<a name="connectors-dbtwo-performance-pushdown-example"></a>

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
<a name="connectors-dbtwo-passthrough-queries"></a>

Der Db2-Connector unterstützt [Pass-Through-Abfragen.](federated-query-passthrough.md) Pass-Through-Abfragen verwenden eine Tabellenfunktion, um Ihre vollständige Abfrage zur Ausführung an die Datenquelle weiterzuleiten.

Um Pass-Through-Abfragen mit Db2 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 Db2 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
<a name="connectors-dbtwo-license-information"></a>

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](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-db2/pom.xml) für diesen Connector und stimmen den Bedingungen der jeweiligen Drittanbieterlizenzen zu, die in der Datei [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-db2/LICENSE.txt) auf GitHub .com enthalten sind.

## Weitere Ressourcen
<a name="connectors-dbtwo-additional-resources"></a>

Die neuesten Informationen zur JDBC-Treiberversion finden Sie in der Datei [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-db2/pom.xml) für den Db2-Connector auf .com. GitHub

Weitere Informationen zu diesem Connector finden Sie auf [der entsprechenden Website](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-db2) unter .com. GitHub

# Amazon Athena IBM Db2 AS/400 (Db2 iSeries)-Connector
<a name="connectors-ibm-db2-as400"></a>

Der Amazon-Athena-Konnektor für Db2 AS/400 ermöglicht es Amazon Athena, SQL-Abfragen auf Ihren IBM Db2 AS/400 (Db2 iSeries)-Datenbanken mit JDBC auszuführen.

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
<a name="connectors-db2as400-prerequisites"></a>
+ Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Für weitere Informationen siehe [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md) oder [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md).
+ Richten Sie eine VPC und eine Sicherheitsgruppe ein, bevor Sie diesen Konnektor verwenden. Weitere Informationen finden Sie unter [Erstellen Sie eine VPC für einen Datenquellenconnector oder AWS Glue eine Datenquellenverbindung](athena-connectors-vpc-creation.md).

## Einschränkungen
<a name="connectors-ibm-db2-as400-limitations"></a>
+ 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)](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) im *AWS Lambda -Entwicklerhandbuch.*
+ Datums- und Zeitstempeldatentypen in Filterbedingungen müssen in geeignete Datentypen umgewandelt werden.

## Bedingungen
<a name="connectors-ibm-db2-as400-terms"></a>

Die folgenden Begriffe beziehen sich auf den Db2-AS/400-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 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.

## Parameters
<a name="connectors-ibm-db2-as400-parameters"></a>

Verwenden Sie die Parameter in diesem Abschnitt, um den Db2-AS/400-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](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) abweichen. Verwenden Sie ab dem 3. Dezember 2024 die folgenden Parameter nur, wenn Sie eine frühere Version eines Athena-Datenquellen-Connectors [manuell bereitstellen](connect-data-source-serverless-app-repo.md).

### Glue Connections (empfohlen)
<a name="connectors-ibm-db2-as400-gc"></a>

Wir empfehlen, dass Sie einen DB2-AS/400-Connector mithilfe eines Glue-Connections-Objekts konfigurieren. Setzen Sie dazu die `glue_connection`-Umgebungsvariable des Db2-AS/400-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 DB2AS400
```

**Lambda-Umgebungseigenschaften**
+ **glue\$1connection** – Gibt den Namen der Glue-Connection an, die dem Verbund-Connector zugeordnet ist. 
+ **casing\$1mode** – (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-Verbindungen verwenden, müssen diese AWS Secrets Manager zum Speichern von Anmeldeinformationen verwenden.
Der mit Glue-Connection erstellte Db2-AS/400-Connector unterstützt die Verwendung eines Multiplexing-Handlers nicht.
Der mit Glue-Connection erstellte Db2-AS/400--Connector unterstützt nur `ConnectionSchemaVersion` 2.

### Legacy-Connections
<a name="connectors-ibm-db2-as400-legacy"></a>

#### Verbindungszeichenfolge
<a name="connectors-ibm-db2-as400-connection-string"></a>

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

```
db2as400://${jdbc_connection_string}
```

#### Verwenden eines Multiplexing-Handlers
<a name="connectors-ibm-db2-as400-using-a-multiplexing-handler"></a>

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 | Db2MuxCompositeHandler | 
| Metadaten-Handler | Db2MuxMetadataHandler | 
| Record Handler | Db2MuxRecordHandler | 

##### Multiplex-Handler-Parameter
<a name="connectors-ibm-db2-as400-multiplexing-handler-parameters"></a>


****  

| Parameter | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | 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 mydb2as400catalog ist, dann lautet der Name der Umgebungsvariablen mydb2as400catalog\$1connection\$1string. | 
| default | Erforderlich Die standardmäßige Verbindungszeichenfolge. Diese Zeichenfolge wird verwendet, wenn der Katalog verwendet wird lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Die folgenden Beispieleigenschaften gelten für eine Db2-MUX-Lambda-Funktion, die zwei Datenbank-Instances unterstützt: `db2as4001` (die Standardeinstellung) und `db2as4002`.


****  

| Eigenschaft | Wert | 
| --- | --- | 
| default | db2as400://jdbc:as400://<ip\$1address>;<properties>;:\$1\$1<secret name>\$1; | 
| db2as400\$1catalog1\$1connection\$1string | db2as400://jdbc:as400://db2as4001.hostname/:\$1\$1secret1\$1name\$1 | 
| db2as400\$1catalog2\$1connection\$1string | db2as400://jdbc:as400://db2as4002.hostname/:\$1\$1secret2\$1name\$1 | 
| db2as400\$1catalog3\$1connection\$1string | db2as400://jdbc:as400://<ip\$1address>;user=<username>;password=<password>;<properties>; | 

##### Bereitstellen von Anmeldeinformationen
<a name="connectors-ibm-db2-as400-providing-credentials"></a>

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 hartcodierten Geheimnissen nach AWS Secrets Manager finden Sie AWS Secrets Manager im *AWS Secrets Manager Benutzerhandbuch* unter [Verschieben von hartcodierten Geheimnissen nach](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html).
+ **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](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) oder einen [VPC-Endpunkt verfügen, um eine Verbindung zu Secrets](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html) Manager herzustellen.

  Sie können den Namen eines Geheimnisses in AWS Secrets Manager Ihre 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, eine Rotation der Anmeldeinformationen zu verwenden AWS Secrets Manager . 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 `${secret_name}`.

```
db2as400://jdbc:as400://<ip_address>;<properties>;:${<secret_name>};
```

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

```
db2as400://jdbc:as400://<ip_address>;user=<username>;password=<password>;<properties>;
```

#### Verwenden eines einzelnen Verbindungs-Handlers
<a name="connectors-ibm-db2-as400-using-a-single-connection-handler"></a>

Sie können die folgenden Einzelverbindungs-Metadaten und Datensatz-Handler verwenden, um eine Verbindung zu einer einzelnen Db2-AS/400-Instance herzustellen.


****  

| Handler-Typ | Klasse | 
| --- | --- | 
| Composite Handler | Db2CompositeHandler | 
| Metadaten-Handler | Db2MetadataHandler | 
| Record Handler | Db2RecordHandler | 

##### Parameter für Einzelverbindungs-Handler
<a name="connectors-ibm-db2-as400-single-connection-handler-parameters"></a>


****  

| Parameter | Description | 
| --- | --- | 
| 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 Db2-AS/400-Instance, die von einer Lambda-Funktion unterstützt wird.


****  

| Eigenschaft | Wert | 
| --- | --- | 
| default | db2as400://jdbc:as400://<ip\$1address>;<properties>;:\$1\$1<secret\$1name>\$1; | 

#### Überlauf-Parameter
<a name="connectors-ibm-db2-as400-spill-parameters"></a>

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 | Description | 
| --- | --- | 
| spill\$1bucket | Erforderlich Überlauf-Bucket-Name. | 
| spill\$1prefix | Erforderlich Schlüssel-Prefix für den Überlauf-Bucket. | 
| spill\$1put\$1request\$1headers | (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. \$1"x-amz-server-side-encryption" : "AES256"\$1). Weitere mögliche Header finden Sie [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)in der Amazon Simple Storage Service API-Referenz. | 

## Datentypunterstützung
<a name="connectors-ibm-db2-as400-data-type-support"></a>

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


****  

| Db2 AS/400 | Arrow | 
| --- | --- | 
| CHAR | VARCHAR | 
| VARCHAR | VARCHAR | 
| DATE | DATEDAY | 
| TIME | VARCHAR | 
| TIMESTAMP (ZEITSTEMPEL) | DATEMILLI | 
| DATETIME | DATEMILLI | 
| BOOLEAN | BOOL | 
| SMALLINT | SMALLINT | 
| INTEGER | INT | 
| BIGINT | BIGINT | 
| DECIMAL | DECIMAL | 
| REAL | FLOAT8 | 
| DOUBLE | FLOAT8 | 
| DECFLOAT | FLOAT8 | 

## Partitionen und Splits
<a name="connectors-ibm-db2-as400-partitions-and-splits"></a>

Eine Partition wird durch eine oder mehrere Partitionsspalte(n) vom Typ `varchar` dargestellt. Der Db2-AS/400-Konnektor erstellt Partitionen mithilfe der folgenden Organisationsschemas.
+ Nach Hash verteilen
+ Nach Bereich partitionieren
+ Nach Dimensionen organisieren

Der Konnektor ruft Partitionsdetails wie die Anzahl der Partitionen und den Spaltennamen aus einer oder mehreren Db2-AS/400-Metadatentabellen ab. Splits werden basierend auf der Anzahl der identifizierten Partitionen erstellt. 

## Leistung
<a name="connectors-db2-as400-performance"></a>

Verwenden Sie zur Verbesserung der Leistung das Prädikat-Pushdown für Abfrage von Athena, wie in den folgenden Beispielen.

```
SELECT * FROM "lambda:<LAMBDA_NAME>"."<SCHEMA_NAME>"."<TABLE_NAME>" 
 WHERE integercol = 2147483647
```

```
SELECT * FROM "lambda: <LAMBDA_NAME>"."<SCHEMA_NAME>"."<TABLE_NAME>" 
 WHERE timestampcol >= TIMESTAMP '2018-03-25 07:30:58.878'
```

## Pass-Through-Abfragen
<a name="connectors-db2as400-passthrough-queries"></a>

Der Db2-AS/400-Connector unterstützt [Pass-Through-Abfragen.](federated-query-passthrough.md) Pass-Through-Abfragen verwenden eine Tabellenfunktion, um Ihre vollständige Abfrage zur Ausführung an die Datenquelle weiterzuleiten.

Um Pass-Through-Abfragen mit Db2 AS/400 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 Db2 AS/400 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
<a name="connectors-db2as400-license-information"></a>

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](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-db2-as400/pom.xml) für diesen Connector und stimmen den Bedingungen der jeweiligen Drittanbieterlizenzen zu, die in der Datei [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-db2-as400/LICENSE.txt) auf GitHub .com enthalten sind.

## Weitere Ressourcen
<a name="connectors-db2as400-additional-resources"></a>

Die neuesten Informationen zur JDBC-Treiberversion finden Sie in der Datei [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-db2-as400/pom.xml) für den Db2 AS/400-Connector auf .com. GitHub

Weitere Informationen zu diesem Connector finden Sie auf [der entsprechenden Website unter .com](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-db2-as400). GitHub

# Amazon-Athena-DocumentDB-Konnektor
<a name="connectors-docdb"></a>

Der DocumentDB-Konnektor von Amazon Athena ermöglicht Amazon Athena die Kommunikation mit Ihren DocumentDB-Instances, sodass Sie Ihre DocumentDB-Daten mit SQL abfragen können. Der Konnektor funktioniert auch mit jedem Endpunkt, der mit MongoDB kompatibel ist.

Im Gegensatz zu herkömmlichen relationalen Datenspeichern haben Amazon-DocumentDB-Sammlungen kein festgelegtes Schema. DocumentDB besitzt keinen Metadatenspeicher. Jeder Eintrag in einer DocumentDB-Sammlung kann unterschiedliche Felder und Datentypen haben.

Der DocumentDB-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 erzwungen. 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 Konnektor eine AWS Glue Datenbank und eine Tabelle erkennt, die Ihren DocumentDB-Datenbank- und Sammlungsnamen entsprechen, bezieht er seine Schemainformationen aus der entsprechenden AWS Glue Tabelle. 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 DocumentDB-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
<a name="connectors-docdb-prerequisites"></a>
+ Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Für weitere Informationen siehe [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md) oder [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md).

## Parameters
<a name="connectors-docdb-parameters"></a>

Verwenden Sie die Parameter in diesem Abschnitt, um den DocumentDB-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](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) abweichen. Verwenden Sie ab dem 3. Dezember 2024 die folgenden Parameter nur, wenn Sie eine frühere Version eines Athena-Datenquellen-Connectors [manuell bereitstellen](connect-data-source-serverless-app-repo.md).

### Glue Connections (empfohlen)
<a name="connectors-docdb-gc"></a>

Wir empfehlen, dass Sie einen DocumentDB-Connector mithilfe eines Glue-Connections-Objekts konfigurieren. Setzen Sie dazu die `glue_connection` Umgebungsvariable des DocumentDB-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 DOCUMENTDB
```

**Lambda-Umgebungseigenschaften**
+ **glue\$1connection** – Gibt den Namen der Glue-Connection an, die dem Verbund-Connector zugeordnet ist.

**Anmerkung**  
Alle Konnektoren, die Glue-Verbindungen verwenden, müssen diese AWS Secrets Manager zum Speichern von Anmeldeinformationen verwenden.
Der mit Glue-Connection erstellte DocumentDB-Connector unterstützt die Verwendung eines Multiplexing-Handlers nicht.
Der mit Glue-Connection erstellte DocumentDB-Connector unterstützt nur `ConnectionSchemaVersion` 2.

### Legacy-Connections
<a name="connectors-docdb-legacy"></a>
+ **spill\$1bucket** – Gibt den Amazon S3-Bucket für Daten an, die die Lambda-Funktionsgrenzen überschreiten.
+ **spill\$1prefix** – (Optional) Ist standardmäßig ein Unterordner im angegebenen `spill_bucket` genannt `athena-federation-spill`. Wir empfehlen Ihnen, einen Amazon-S3-[Speicher-Lebenszyklus](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) an dieser Stelle zu konfigurieren, um die Überlaufe zu löschen, die älter als eine festgelegte Anzahl von Tagen oder Stunden sind.
+ **spill\$1put\$1request\$1headers** – (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 [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)in der *Amazon Simple Storage Service API-Referenz.*
+ **kms\$1key\$1id** – (Optional) Standardmäßig werden alle Daten, die an Amazon S3 gesendet 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, wie`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, können Sie eine ID einer Verschlüsselung angeben.
+ **disable\$1spill\$1encryption** – (Optional) Bei Einstellung auf `True`, wird die Spill-Verschlüsselung deaktiviert. Die Standardeinstellung ist `False`, sodass Daten, die an S3 übertrragen werden, mit AES-GCM verschlüsselt werden - entweder mit einem zufällig generierten Schlüssel oder mit KMS zum Generieren von Schlüsseln. Das Deaktivieren der Überlauf-Verschlüsselung kann die Leistung verbessern, insbesondere wenn Ihr Überlauf-Standort eine [serverseitige Verschlüsselung](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) verwendet.
+ **disable\$1glue** — (Optional) Falls vorhanden und auf true gesetzt, versucht der Connector nicht, zusätzliche Metadaten von abzurufen. AWS Glue
+ **glue\$1catalog** – (Optional) Verwenden Sie diese Option, um einen [kontoübergreifenden AWS Glue -Katalog](data-sources-glue-cross-account.md) anzugeben. Standardmäßig versucht der Connector, Metadaten von seinem eigenen Konto abzurufen. AWS Glue 
+ **default\$1docdb** – Gibt, falls vorhanden, eine DocumentDB-Verbindungszeichenfolge an, die verwendet wird, wenn keine katalogspezifische Umgebungsvariable vorhanden ist.
+ **disable\$1projection\$1and\$1casing** – (Optional) Deaktiviert Projektion und Groß-/Kleinschreibung. Verwenden Sie diese Option, wenn Sie Amazon-DocumentDB-Tabellen abfragen möchten, die die Groß- und Kleinschreibung von Spaltennamen verwenden. Der `disable_projection_and_casing`-Parameter verwendt die folgenden Werte, um das Verhalten der Groß-/Kleinschreibung und Spaltenzuordnung festzulegen: 
  + **falsch** – Dies ist die Standardeinstellung. Die Projektion ist aktiviert, und der Konnektor erwartet, dass alle Spaltennamen in Kleinbuchstaben geschrieben sind. 
  + **wahr** – Deaktiviert Projektion und Groß- und Kleinschreibung. Beachten Sie bei der Verwendung des `disable_projection_and_casing` Parameters die folgenden Punkte: 
    + Die Verwendung des Parameters kann zu höherer Bandbreitennutzung führen. Wenn sich Ihre Lambda-Funktion nicht in derselben AWS-Region wie Ihre Datenquelle befindet, entstehen Ihnen darüber hinaus aufgrund der höheren Bandbreitennutzung höhere standardmäßige AWS -Übertragungskosten zwischen den Regionen. Weitere Informationen zu den Kosten für regionsübergreifende Übertragungen finden Sie im AWS Partnernetzwerk-Blog unter [Gebühren für AWS Datenübertragungsgebühren für Server- und serverlose Architekturen](https://aws.amazon.com/blogs/apn/aws-data-transfer-charges-for-server-and-serverless-architectures/).
    + Da eine größere Anzahl von Bytes übertragen wird und die größere Anzahl von Bytes eine höhere Deserialisierungszeit erfordert, kann sich die Gesamtlatenz erhöhen. 
+ **enable\$1case\$1insensitive\$1match** – (Optional) Wenn `true`, führt Suchen ohne Berücksichtigung der Groß- und Kleinschreibung in Schema- und Tabellennamen in Amazon DocumentDB durch. Der Standardwert ist `false`. Verwenden Sie dies, wenn Ihre Abfrage Schema- oder Tabellennamen in Großbuchstaben enthält.

#### Angeben von Verbindungszeichenfolgen
<a name="connectors-docdb-specifying-connection-strings"></a>

Sie können eine oder mehrere Eigenschaften angeben, die die DocumentDB-Verbindungsdetails für die DocumentDB-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 DocumentDB-Instances von Athena abzufragen:

```
SELECT * FROM "docdb_instance_1".database.table
```

```
SELECT * FROM "docdb_instance_2".database.table
```

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

```
mongodb://:@:/?ssl=true&ssl_ca_certs=rds-combined-ca-bundle.pem&replicaSet=rs0      
```

##### Verwendung von Secrets
<a name="connectors-docdb-using-secrets"></a>

Sie können optional den Wert AWS Secrets Manager für Ihre Verbindungszeichenfolgendetails ganz oder teilweise verwenden. Um das Athena-Federated-Query-Feature mit Secrets Manager zu verwenden, sollte die mit Ihrer Lamba-Funktion verbundene VPC über einen [Internetzugang](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) oder einen [VPC-Endpunkt](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html) verfügen, um eine Verbindung zu Secrets Manager herzustellen.

Wenn Sie die Syntax `${my_secret}` verwenden, um den Namen eines Secrets aus dem Secrets Manager in Ihre Verbindungszeichenfolge einzufügen, ersetzt der Konnektor `${my_secret}` genau durch den Klartextwert aus Secrets Manager. Secrets sollten als Klartext-Secrets mit dem Wert `<username>:<password>` gespeichert werden. Secrets, die als `{username:<username>,password:<password>}` gespeichert wurden, werden nicht ordnungsgemäß an die Verbindungszeichenfolge übergeben.

Secrets können auch vollständig für die gesamte Verbindungszeichenfolge verwendet werden, und der Benutzername und das Passwort können innerhalb des Secrets definiert werden.

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

```
mongodb://${docdb_instance_1_creds}@myhostname.com:123/?ssl=true&ssl_ca_certs=rds-combined-ca-bundle.pem&replicaSet=rs0         
```

Das Athena Query Federation SDK versucht automatisch, ein Secret mit dem Namen `docdb_instance_1_creds` vom Secrets Manager abzurufen und setzt diesen Wert anstelle von `${docdb_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.

## Abrufen zusätzlicher Metadaten
<a name="supplemental-metadata"></a>

Um zusätzliche Metadaten abzurufen, gehen Sie wie folgt vor, um Ihre Glue-Datenbank und -Tabelle zu konfigurieren.

### Die Glue-Datenbank einrichten
<a name="setup-glue-database"></a>

1. Erstellen Sie eine Glue-Datenbank mit dem gleichen Namen wie Ihre DocumentDB-Sammlung.

1. Geben Sie `docdb-metadata-flag` im Feld Standort-URI ein.

### Konfigurieren Sie die Glue-Tabelle
<a name="setup-glue-table"></a>

Fügen Sie Ihrer Glue-Tabelle die folgenden Parameter hinzu:
+ `docdb-metadata-flag = true`
+ `columnMapping = apple=APPLE`

  In diesem Beispiel steht `apple` für den kleingeschriebenen Spaltennamen in Glue und `APPLE` für den tatsächlichen Spaltennamen, bei dem Groß- und Kleinschreibung beachtet wird, in Ihrer DocumentDB-Sammlung.

### Abrufen von Metadaten überprüfen
<a name="verify-metadata-retrieval"></a>

1. Führen Sie Ihre Abfrage aus.

1. Prüfen Sie in den CloudWatch Protokollen der Lambda-Funktion, ob Metadaten erfolgreich abgerufen wurden. Bei einem erfolgreichen Abruf wird der folgende Protokolleintrag angezeigt:

   ```
   doGetTable: Retrieved schema for table[TableName{schemaName=test, tableName=profiles}] from AWS Glue.
   ```

**Anmerkung**  
Wenn in Ihrer Tabelle bereits ein `columnMapping`-Feld konfiguriert ist, müssen Sie lediglich den `docdb-metadata-flag = true`-Parameter zu den Tabelleneigenschaften hinzufügen.

## Einrichten von Datenbanken und Tabellen in AWS Glue
<a name="connectors-docdb-setting-up-databases-and-tables-in-aws-glue"></a>

Da die integrierte Schemainferenzfunktion des Connectors nur eine begrenzte Anzahl von Dokumenten scannt und nur eine Teilmenge von Datentypen unterstützt, sollten Sie ihn stattdessen AWS Glue für Metadaten verwenden.

Um eine AWS Glue Tabelle für die Verwendung mit Amazon DocumentDB zu aktivieren, benötigen Sie eine AWS Glue Datenbank und eine Tabelle für die DocumentDB-Datenbank und -Sammlung, für die Sie zusätzliche Metadaten bereitstellen möchten.

**Um eine AWS Glue Tabelle für zusätzliche Metadaten zu verwenden**

1. Verwenden Sie die AWS Glue Konsole, um eine AWS Glue Datenbank zu erstellen, die denselben Namen wie Ihr Amazon DocumentDB DocumentDB-Datenbankname hat.

1. Stellen Sie die URI-Eigenschaft der Datenbank so ein, dass sie einschließt **docdb-metadata-flag**.

1. (Optional) Fügen Sie die Tabelleneigenschaft **sourceTable** hinzu. Diese Eigenschaft definiert den Namen der Quelltabelle in Amazon DocumentDB. Verwenden Sie diese Eigenschaft, wenn Ihre AWS Glue Tabelle einen anderen Namen als der Tabellenname in Amazon DocumentDB hat. Unterschiede in den Benennungsregeln zwischen Amazon DocumentDB AWS Glue und Amazon DocumentDB können dies erforderlich machen. Beispielsweise sind Großbuchstaben in AWS Glue Tabellennamen nicht zulässig, in Amazon DocumentDB-Tabellennamen jedoch zulässig.

1. (Optional) Fügen Sie die Tabelleneigenschaft **columnMapping** hinzu. Diese Eigenschaft definiert die Zuordnungen von Spaltennamen. Verwenden Sie diese Eigenschaft, wenn die Regeln zur Benennung von AWS Glue Spalten Sie daran hindern, eine AWS Glue Tabelle zu erstellen, die dieselben Spaltennamen wie die in Ihrer Amazon DocumentDB-Tabelle hat. Dies kann nützlich sein, da Großbuchstaben in Amazon-DocumentDB-Spaltennamen zulässig sind, aber nicht in AWS Glue -Spaltennamen.

   Es wird erwartet, dass es sich bei dem `columnMapping`-Eigenschaftswert um eine Reihe von Zuordnungen im Format `col1=Col1,col2=Col2` handelt.
**Anmerkung**  
 Die gilt Spaltenzuordnung nur für Spaltennamen der obersten Ebene und nicht für verschachtelte Felder. 

   Nachdem Sie die AWS Glue `columnMapping` Tabelleneigenschaft hinzugefügt haben, können Sie die `disable_projection_and_casing` Lambda-Umgebungsvariable entfernen.

1. Stellen Sie sicher, dass Sie die in diesem Dokument aufgeführten Datentypen verwenden, die für AWS Glue geeignet sind.

## Datentypunterstützung
<a name="connectors-docdb-data-type-support"></a>

In diesem Abschnitt werden die Datentypen aufgeführt, die der DocumentDB-Konnektor für Schemainferenz verwendet, sowie die Datentypen, wenn AWS Glue Metadaten verwendet werden.

### Datentypen für Schemainferenz
<a name="connectors-docdb-schema-inference-data-types"></a>

Das Schemainferenzfeature des DocumentDB-Konnektors versucht, Werte als zu einem der folgenden Datentypen gehörend abzuleiten. Die Tabelle zeigt die entsprechenden Datentypen für Amazon DocumentDB, Java und Apache Arrow.


****  

| Apache Arrow | Java oder DocDB | 
| --- | --- | 
| VARCHAR | Zeichenfolge | 
| INT | Ganzzahl | 
| BIGINT | Long | 
| BIT | Boolesch | 
| FLOAT4 | Gleitkommazahl | 
| FLOAT8 | Double | 
| ZEITSTEMPEL/SEK | Date | 
| VARCHAR | ObjectId | 
| LIST | Auflisten | 
| STRUCT | Dokument | 

### AWS Glue Datentypen
<a name="connectors-docdb-glue-data-types"></a>

Wenn Sie zusätzliche Metadaten verwenden AWS Glue , können Sie die folgenden Datentypen konfigurieren. Die Tabelle zeigt die entsprechenden Datentypen für AWS Glue und Apache Arrow.


****  

| AWS Glue | Apache Arrow | 
| --- | --- | 
| int | INT | 
| bigint | BIGINT | 
| double | FLOAT8 | 
| float | FLOAT4 | 
| Boolean | BIT | 
| Binary | VARBINARY | 
| Zeichenfolge | VARCHAR | 
| Auflisten | LIST | 
| Struct | STRUCT | 

## Erforderliche Berechtigungen
<a name="connectors-docdb-required-permissions"></a>

Ausführliche Informationen zu den für diesen Konnektor erforderlichen IAM-Richtlinien finden Sie im `Policies`-Abschnitt der [athena-docdb.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-docdb/athena-docdb.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 DocumentDB-Konnektor benötigt nur Lesezugriff auf die AWS Glue Data Catalog , um Schemainformationen abzurufen.
+ **CloudWatch Logs** — Der Connector benötigt Zugriff auf CloudWatch Logs, um Logs zu speichern.
+ **AWS Secrets Manager Lesezugriff** — Wenn Sie DocumentDB-Endpunktdetails in Secrets Manager speichern möchten, müssen Sie dem Connector Zugriff auf diese Secrets gewähren.
+ **Zugriff auf die 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 DocumentDB-Instances kommunizieren kann.

## Leistung
<a name="connectors-docdb-performance"></a>

Der Amazon-DocumentDB-Konnektor von Athena unterstützt derzeit keine parallelen Scans, sondern versucht, Prädikate als Teil seiner DocumentDB-Abfragen nach unten zu verschieben. Prädikate für Indizes in Ihrer DocumentDB-Sammlung führen zu deutlich weniger gescannten Daten.

Die Lambda-Funktion führt 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.

## Pass-Through-Abfragen
<a name="connectors-docdb-passthrough-queries"></a>

Der Athena Amazon DocumentDB-Connector unterstützt [Pass-Through-Abfragen](federated-query-passthrough.md) und basiert auf NoSQL. Weitere Informationen über Abfragen in Amazon-DocumentDB finden Sie unter [Abfragen](https://docs.aws.amazon.com/documentdb/latest/developerguide/querying.html) im *Amazon-DocumentDB-Entwicklerhandbuch*.

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

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

Im folgenden Beispiel wird die `example`-Datenbank innerhalb der `TPCDS`-Sammlung abgefragt und dabei nach allen Büchern mit dem Titel *Grundrechte* gefiltert.

```
SELECT * FROM TABLE(
        system.query(
            database => 'example',
            collection => 'tpcds',
            filter => '{title: "Bill of Rights"}'
        ))
```

## Weitere Ressourcen
<a name="connectors-docdb-additional-resources"></a>
+ *Einen Artikel zur Verwendung von [Amazon Athena Federated Query](federated-queries.md) zum Verbinden einer MongoDB-Datenbank mit [Quick](https://aws.amazon.com/quicksight/) zum Erstellen von Dashboards und Visualisierungen finden Sie unter [Visualisieren von MongoDB-Daten aus Quick mit Amazon Athena](https://aws.amazon.com/blogs/big-data/visualize-mongodb-data-from-amazon-quicksight-using-amazon-athena-federated-query/) Federated Query im Big Data-Blog.AWS *
+ [Weitere Informationen zu diesem Connector finden Sie auf der entsprechenden Website unter .com.](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-docdb) GitHub

# Amazon Athena DynamoDB Konnektor
<a name="connectors-dynamodb"></a>

Der Amazon-Athena-DynamoDB-Konnektor ermöglicht Amazon Athena die Kommunikation mit DynamoDB, sodass Sie Ihre Tabellen mit SQL abfragen können. Schreiboperationen wie [INSERT INTO](insert-into.md) werden nicht unterstützt.

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.

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

## Voraussetzungen
<a name="connectors-dynamodb-prerequisites"></a>
+ Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Für weitere Informationen siehe [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md) oder [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md).

## Einschränkungen
<a name="connectors-dynamodb-limitations"></a>

Wenn Sie Ihre DynamoDB-Verbindungen zu Glue Catalog und Lake Formation migrieren, werden nur die in Kleinbuchstaben geschriebenen Tabellen- und Spaltennamen erkannt. 

## Parameters
<a name="connectors-dynamodb-parameters"></a>

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

### Glue Connections (empfohlen)
<a name="ddb-gc"></a>

Wir empfehlen, dass Sie einen DynamoDB-Connector mithilfe eines Glue-Connections-Objekts konfigurieren. Setzen Sie dazu die `glue_connection`-Umgebungsvariable des DynamoDB-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 DYNAMODB
```

**Lambda-Umgebungseigenschaften**

**glue\$1connection** – Gibt den Namen der Glue-Connection an, die dem Verbund-Connector zugeordnet ist. 

**Anmerkung**  
Alle Konnektoren, die Glue-Verbindungen verwenden, müssen diese AWS Secrets Manager zum Speichern von Anmeldeinformationen verwenden.
Der mit Glue-Connection erstellte DynamoDB-Connector unterstützt die Verwendung eines Multiplexing-Handlers nicht.
Der mit Glue-Verbindungen erstellte DynamoDB-Konnektor unterstützt nur `ConnectionSchemaVersion` 2.

### Legacy-Connections
<a name="ddb-legacy"></a>

**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-Datenquellenkonnektoren, die ohne eine zugehörige Glue-Connection erstellt wurden. Verwenden Sie die folgenden Parameter nur, wenn Sie eine frühere Version eines Athena-Datenquellenkonnektors [manuell bereitstellen](connect-data-source-serverless-app-repo.md) oder wenn die `glue_connection`-Umgebungseigenschaft nicht angegeben ist.

**Lambda-Umgebungseigenschaften**
+ **spill\$1bucket** – Gibt den Amazon S3-Bucket für Daten an, die die Lambda-Funktionsgrenzen überschreiten.
+ **spill\$1prefix** – (Optional) Ist standardmäßig ein Unterordner im angegebenen `spill_bucket` genannt `athena-federation-spill`. Wir empfehlen Ihnen, einen Amazon-S3-[Speicher-Lebenszyklus](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) an dieser Stelle zu konfigurieren, um die Überlaufe zu löschen, die älter als eine festgelegte Anzahl von Tagen oder Stunden sind.
+ **spill\$1put\$1request\$1headers** – (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 [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)in der *Amazon Simple Storage Service API-Referenz.*
+ **kms\$1key\$1id** – (Optional) Standardmäßig werden alle Daten, die an Amazon S3 gesendet 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, wie`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, können Sie eine ID einer Verschlüsselung angeben.
+ **disable\$1spill\$1encryption** – (Optional) Bei Einstellung auf `True`, wird die Spill-Verschlüsselung deaktiviert. Die Standardeinstellung ist `False`, sodass Daten, die an S3 übertrragen werden, mit AES-GCM verschlüsselt werden - entweder mit einem zufällig generierten Schlüssel oder mit KMS zum Generieren von Schlüsseln. Das Deaktivieren der Überlauf-Verschlüsselung kann die Leistung verbessern, insbesondere wenn Ihr Überlauf-Standort eine [serverseitige Verschlüsselung](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) verwendet.
+ **disable\$1glue** — (Optional) Falls vorhanden und auf true gesetzt, versucht der Connector nicht, zusätzliche Metadaten von abzurufen. AWS Glue
+ **glue\$1catalog** – (Optional) Verwenden Sie diese Option, um einen [kontoübergreifenden AWS Glue -Katalog](data-sources-glue-cross-account.md) anzugeben. Standardmäßig versucht der Connector, Metadaten von seinem eigenen Konto abzurufen. AWS Glue 
+ **disable\$1projection\$1and\$1casing** – (Optional) Deaktiviert Projektion und Groß-/Kleinschreibung. Verwenden Sie diese Option, wenn Sie DynamoDB-Tabellen abfragen möchten, deren Spaltennamen Groß- und Kleinschreibung enthalten, und Sie keine `columnMapping`-Eigenschaft für Ihre AWS Glue -Tabelle festlegen wollen.

  Der `disable_projection_and_casing`-Parameter verwendt die folgenden Werte, um das Verhalten der Groß-/Kleinschreibung und Spaltenzuordnung festzulegen:
  + **auto** – Deaktiviert Projektion und Groß-/Kleinschreibung, wenn ein zuvor nicht unterstützter Typ erkannt wird und die Spaltennamenzuordnung für die Tabelle nicht festgelegt ist. Dies ist die Standardeinstellung.
  + **always** – Deaktiviert Projektion und Groß-/Kleinschreibung bedingungslos. Dies ist nützlich, wenn Ihre DynamoDB-Spaltennamen Groß- und Kleinschreibung enthalten, aber keine Spaltennamenzuordnung angeben möchten.

  Beachten Sie bei der Verwendung des `disable_projection_and_casing` Parameters die folgenden Punkte:
  + Die Verwendung des Parameters kann zu höherer Bandbreitennutzung führen. Wenn sich Ihre Lambda-Funktion nicht in derselben AWS-Region wie Ihre Datenquelle befindet, entstehen Ihnen darüber hinaus aufgrund der höheren Bandbreitennutzung höhere standardmäßige AWS -Übertragungskosten zwischen den Regionen. Weitere Informationen zu den Kosten für regionsübergreifende Übertragungen finden Sie im AWS Partnernetzwerk-Blog unter [Gebühren für AWS Datenübertragungsgebühren für Server- und serverlose Architekturen](https://aws.amazon.com/blogs/apn/aws-data-transfer-charges-for-server-and-serverless-architectures/).
  + Da eine größere Anzahl von Bytes übertragen wird und die größere Anzahl von Bytes eine höhere Deserialisierungszeit erfordert, kann sich die Gesamtlatenz erhöhen. 

## Einrichten von Datenbanken und Tabellen in AWS Glue
<a name="connectors-dynamodb-setting-up-databases-and-tables-in-aws-glue"></a>

Da die integrierte Schema-Inferenzfunktion des Connectors begrenzt ist, sollten Sie ihn AWS Glue für Metadaten verwenden. Dazu müssen Sie über eine Datenbank und eine Tabelle verfügen. AWS Glue Um sie für die Verwendung mit DynamoDB zu aktivieren, müssen Sie ihre Eigenschaften bearbeiten.

**Um Datenbankeigenschaften in der AWS Glue Konsole zu bearbeiten**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die AWS Glue Konsole unter [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Erweitern Sie im Navigationsbereich den Eintrag **Datenkatalog** und wählen Sie dann **Datenbanken** aus.

   Auf der Seite **Databases** (Datenbanken) können Sie eine vorhandene Datenbank bearbeiten oder **Add Databases** (Datenbank hinzufügen) auswählen, um eine zu erstellen.

1. Wählen Sie in der Liste der Datenbanken den Link für die Datenbank aus, die Sie bearbeiten möchten.

1. Wählen Sie **Bearbeiten** aus.

1. Auf der Seite **Eine Datenbank aktualisieren**, unter **Datenbankeinstellungen**, fügen Sie für **Speicherort** die Zeichenfolge **dynamo-db-flag** hinzu. Dieses Schlüsselwort gibt an, dass die Datenbank Tabellen enthält, die der Athena DynamoDB-Connector für zusätzliche Metadaten verwendet, und ist für AWS Glue andere Datenbanken als erforderlich. `default` Die `dynamo-db-flag`-Eigenschaft ist nützlich, um Datenbanken in Konten mit vielen Datenbanken herauszufiltern.

1. Wählen Sie **Update Database** (Datenbank aktualisieren) aus.

**Um Tabelleneigenschaften in der Konsole zu bearbeiten AWS Glue**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die AWS Glue Konsole unter [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Erweitern Sie im Navigationsbereich den Eintrag **Datenkatalog** und wählen Sie dann **Tabellen** aus.

1. Wählen Sie auf der Seite **Tabellen** in der Liste der Tabellen den verknüpften Namen der Tabelle, die Sie bearbeiten möchten.

1. Wählen Sie **Actions** (Aktionen) und **Edit table** (Tabelle bearbeiten).

1. Fügen Sie auf der Seite **Edit table** (Tabelle bearbeiten) im Abschnitt **Table properties** (Tabelleneigenschaften) nach Bedarf die folgenden Tabelleneigenschaften hinzu. Wenn Sie den AWS Glue DynamoDB-Crawler verwenden, werden diese Eigenschaften automatisch festgelegt.
   + **DynamoDB** – Zeichenfolge, die dem Athena-DynamoDB-Konnektor anzeigt, dass die Tabelle für ergänzende Metadaten verwendet werden kann. Geben Sie die `dynamodb`-Zeichenfolge in den Tabelleneigenschaften unter einem Feld mit der Bezeichnung **classification** (Einstufung) (exakte Übereinstimmung) ein.
**Anmerkung**  
**Die Seite **Tabelleneigenschaften festlegen**, die Teil des Tabellenerstellungsprozesses in der AWS Glue Konsole ist, enthält einen Abschnitt **Datenformat** mit einem Klassifizierungsfeld.** Sie können hier nicht `dynamodb` eingeben oder wählen. Nachdem Sie Ihre Tabelle erstellt haben, folgen Sie stattdessen den Schritten zum Bearbeiten der Tabelle und zum Eingeben von `classification` und `dynamodb` als Schlüssel-Wert-Paar im Abschnitt **Tabelleneigenschaften**.
   + **sourceTable** – Optionale Tabelleneigenschaft, die den Namen der Quelltabelle in DynamoDB definiert. Verwenden Sie diese Option, wenn Regeln zur AWS Glue Tabellennennung Sie daran hindern, eine AWS Glue Tabelle mit demselben Namen wie Ihre DynamoDB-Tabelle zu erstellen. Beispielsweise sind Großbuchstaben in AWS Glue Tabellennamen nicht zulässig, in DynamoDB-Tabellennamen jedoch zulässig.
   + **columnMapping** – Optionale Tabelleneigenschaft, die Spaltennamenzuordnungen definiert. Verwenden Sie diese Option, wenn die Regeln zur AWS Glue Spaltenbenennung Sie daran hindern, eine AWS Glue Tabelle mit denselben Spaltennamen wie Ihre DynamoDB-Tabelle zu erstellen. Beispielsweise sind Großbuchstaben in AWS Glue Spaltennamen nicht zulässig, in DynamoDB-Spaltennamen jedoch zulässig. Es wird erwartet, dass der Eigenschaftswert im Format col1=COL1, col2=COL2 vorliegt. Beachten Sie, dass die Spaltenzuordnung nur für Spaltennamen der obersten Ebene und nicht für verschachtelte Felder gilt.
   + **defaultTimeZone**— Optionale Tabelleneigenschaft, die `date` auf `datetime` Werte ohne explizite Zeitzone angewendet wird. Das Festlegen dieses Werts ist eine bewährte Methode, um Diskrepanzen zwischen der Standardzeitzone der Datenquelle und der Zeitzone der Athena-Sitzung zu vermeiden.
   + **datetimeFormatMapping**— Optionale Tabelleneigenschaft, die das `datetime` Format `date` oder angibt, das beim Parsen von Daten aus einer Spalte des `timestamp` Datentyps AWS Glue `date` oder verwendet werden soll. Wenn diese Eigenschaft nicht angegeben ist, versucht der Konnektor ein ISO-8601-Format [ableiten](https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/time/DateFormatUtils.html). Wenn der Konnektor das `date`- oder `datetime`-Format nicht ermitteln oder die rohe Zeichenkette nicht analysieren kann, wird der Wert im Ergebnis ausgelassen. 

     Der Wert `datetimeFormatMapping` muss das Format `col1=someformat1,col2=someformat2` haben. Im Folgenden sind einige Beispielformate aufgeführt:

     ```
     yyyyMMdd'T'HHmmss 
     ddMMyyyy'T'HH:mm:ss
     ```

     Wenn Ihre Kolumne `date`- oder `datetime`-Werte ohne Zeitzone hat und Sie die Spalte in der `WHERE`-Klausel verwenden möchten, legen Sie die `datetimeFormatMapping`-Eigenschaft für die Spalte fest.

1. Wenn Sie Ihre Spalten manuell definieren, stellen Sie sicher, dass Sie die entsprechenden Datentypen verwenden. Wenn Sie einen Crawler verwendet haben, überprüfen Sie die Spalten und Typen, die der Crawler erkannt hat.

1. Wählen Sie **Speichern**.

## Erforderliche Berechtigungen
<a name="connectors-dynamodb-required-permissions"></a>

Ausführliche Informationen zu den für diesen Konnektor erforderlichen IAM-Richtlinien finden Sie im `Policies`-Abschnitt der [athena-dynamodb.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-dynamodb/athena-dynamodb.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 DynamoDB-Konnektor benötigt nur Lesezugriff auf die, um AWS Glue Data Catalog Schemainformationen abzurufen.
+ **CloudWatch Logs** — Der Connector benötigt Zugriff auf CloudWatch Logs, um Logs zu speichern.
+ **DynamoDB-Lesezugriff** – Der Konnektor verwendet die `DescribeTable`, `ListSchemas`, `ListTables`, `Query` und `Scan` API-Operationen.

## Leistung
<a name="connectors-dynamodb-performance"></a>

Der Athena DynamoDB-Konnektor unterstützt parallel Scans und versucht, Prädikat-Push-Down als Teil seiner DynamoDB-Abfragen durchzuführen. Ein Hash-Schlüssel-Prädikat mit verschiedenen `X`-Werten führt zu `X`-Abfragen von DynamoDB. Alle anderen Prädikatszenarien führen zu einer Anzahl von `Y` Scan-Aufrufen, wobei `Y` heuristisch basierend auf der Größe Ihrer Tabelle und dem bereitgestellten Durchsatz bestimmt wird. Die Auswahl einer Teilmenge von Spalten führt jedoch manchmal zu einer längeren Laufzeit der Abfrageausführung.

`LIMIT`-Klauseln und einfache Prädikate werden nach unten verschoben, wodurch die Menge der gescannten Daten reduziert und die Laufzeit der Abfrageausführung verkürzt wird. 

### LIMIT-Klauseln
<a name="connectors-dynamodb-performance-limit-clauses"></a>

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
<a name="connectors-dynamodb-performance-predicates"></a>

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

Die folgenden Athena-DynamoDB-Konnektor-Operatoren unterstützen Prädikat-Pushdown:
+ **Boolean**: UND
+ **Gleichheit: **GLEICH, NICHT GLEICH, WENIGER\$1ALS, WENIGER\$1ODER\$1GLEICH, GRÖSSER\$1ALS, GRÖSSER\$1ODER\$1GLEICH, IST\$1NULL

### Beispiel für einen kombinierten Pushdown
<a name="connectors-dynamodb-performance-pushdown-example"></a>

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

```
SELECT *
FROM my_table
WHERE col_a > 10 and col_b < 10
LIMIT 10
```

Einen Artikel über die Verwendung von Prädikat-Pushdown zur Verbesserung der Leistung in Verbundabfragen, einschließlich DynamoDB, finden Sie unter [Verbessern von Verbundabfragen mit Prädikat-Pushdown in Amazon Athena](https://aws.amazon.com/blogs/big-data/improve-federated-queries-with-predicate-pushdown-in-amazon-athena/) im *AWS -Big-Data-Blog*.

## Pass-Through-Abfragen
<a name="connectors-dynamodb-passthrough-queries"></a>

Der DynamoDB-Connector unterstützt [Pass-Through-Abfragen](federated-query-passthrough.md) und verwendet PartiQL-Syntax. Der [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html)DynamoDB-API-Vorgang wird nicht unterstützt. Informationen zum Abfragen von DynamoDB mit PartiQL finden Sie unter [PartiQL Anweisungen für DynamoDB auswählen](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ql-reference.select.html) im *Amazon DynamoDB Entwicklerhandbuch*.

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

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

Das folgende Beispiel für eine DynamoDB-Passthrough-Abfrage verwendet PartiQL, um eine Liste von Fire TV Stick-Geräten zurückzugeben, deren `DateWatched`-Eigenschaft nach dem 24.12.2022 liegt.

```
SELECT * FROM TABLE(
        system.query(
           query => 'SELECT Devices 
                       FROM WatchList 
                       WHERE Devices.FireStick.DateWatched[0] > '12/24/22''
        ))
```

## Fehlerbehebung
<a name="connectors-dynamodb-troubleshooting"></a>

### Mehrere Filter in einer Sortierschlüsselspalte
<a name="connectors-dynamodb-troubleshooting-sort-key-filters"></a>

**Fehlermeldung**: KeyConditionExpressionsdarf nur eine Bedingung pro Schlüssel enthalten

**Ursache**: Dieses Problem kann in Athena-Engine-Version 3 bei Abfragen auftreten, die sowohl einen unteren als auch einen oberen Grenzfilter für eine DynamoDB-Sortierschlüsselspalte haben. Da DynamoDB nicht mehr als eine Filterbedingung für einen Sortierschlüssel unterstützt, wird ein Fehler ausgelöst, wenn der Konnektor versucht, eine Abfrage herunterzufahren, auf die beide Bedingungen angewendet wurden.

**Lösung**: Aktualisieren Sie die Konnektor-Version auf Version 2023.11.1 oder höher. Anweisungen zum Aktualisieren eines Konnektors finden Sie unter [Datenquellen-Konnektor aktualisieren](connectors-updating.md).

## Kosten
<a name="connectors-dynamodb-costs"></a>

Die Kosten für die Nutzung des Connectors hängen von den zugrunde liegenden AWS Ressourcen ab, die verwendet werden. Da Abfragen, die Scans verwenden, eine große Anzahl von [Lesekapazitätseinheiten (RCUs)](https://aws.amazon.com/dynamodb/pricing/provisioned/) verbrauchen können, sollten Sie die Informationen zur [Preisgestaltung von Amazon DynamoDB sorgfältig](https://aws.amazon.com/dynamodb/pricing/) prüfen.

## Weitere Ressourcen
<a name="connectors-dynamodb-additional-resources"></a>
+ *Eine Einführung in die Verwendung des Amazon-Athena-DynamoDB-Konnektors finden Sie unter [Zugreifen, Abfragen und Verbinden von Amazon-DynamoDB-Tabellen mit Athena im Leitfaden](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html) Muster von AWS Prescriptive Guidance*. 
+ Einen Artikel zur Verwendung des Athena DynamoDB-Konnektors zur Abfrage von Daten in DynamoDB mit SQL und zur Visualisierung von Erkenntnissen in Quick finden Sie im *AWS Big-Data-Blogbeitrag* [Visualisieren von Amazon DynamoDB DynamoDB-Erkenntnissen in Quick mit dem Amazon Athena DynamoDB-Konnektor](https://aws.amazon.com/blogs/big-data/visualize-amazon-dynamodb-insights-in-amazon-quicksight-using-the-amazon-athena-dynamodb-connector-and-aws-glue/) und. AWS Glue
+ Einen Artikel zur Verwendung des Amazon Athena DynamoDB-Connectors mit Amazon DynamoDB, Athena und Quick to create a simple Governance-Dashboard finden Sie im *AWS Big-Data-Blogbeitrag* [Accountübergreifende Amazon DynamoDB-Tabellen mit Amazon Athena Federated Query abfragen](https://aws.amazon.com/blogs/big-data/query-cross-account-amazon-dynamodb-tables-using-amazon-athena-federated-query/).
+ [Weitere Informationen zu diesem Connector finden Sie auf der entsprechenden Website auf .com.](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-dynamodb) GitHub

# Amazon Athena Google-Konnektor BigQuery
<a name="connectors-bigquery"></a>

Der Amazon Athena-Connector für Google [BigQuery](https://cloud.google.com/bigquery/)ermöglicht es Amazon Athena, SQL-Abfragen für Ihre BigQuery Google-Daten auszuführen.

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
<a name="connectors-bigquery-prerequisites"></a>
+ Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Für weitere Informationen siehe [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md) oder [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md).

## Einschränkungen
<a name="connectors-bigquery-limitations"></a>
+ Lambda-Funktionen haben einen maximalen Timeout-Wert von 15 Minuten. Jeder Split führt eine Abfrage aus BigQuery und muss so lange abgeschlossen sein, bis die Ergebnisse gespeichert werden können, damit Athena sie lesen kann. Wenn bei der Lambda-Funktion eine Zeitüberschreitung auftritt, schlägt die Abfrage fehl.
+ Google unterscheidet zwischen Groß- und BigQuery Kleinschreibung. Der Konnektor versucht, die Groß- und Kleinschreibung von Datensatznamen, Tabellennamen und Projekten zu korrigieren IDs. Dies ist notwendig, da Athena alle Metadaten in Kleinbuchstaben schreibt. Diese Korrekturen führen zu vielen zusätzlichen Aufrufen bei Google BigQuery.
+ Der Datentyp BINARY wird nicht unterstützt.
+ Aufgrund der BigQuery Parallelität von Google und der Kontingentbeschränkungen kann es beim Connector zu Problemen mit der Google-Kontingentbegrenzung kommen. Um diese Probleme zu vermeiden, sollten Sie Google so viele Einschränkungen BigQuery wie möglich übertragen. Informationen zu BigQuery Kontingenten finden Sie in der BigQuery Google-Dokumentation unter [Kontingente und Beschränkungen](https://cloud.google.com/bigquery/quotas).

## Parameters
<a name="connectors-bigquery-parameters"></a>

Verwenden Sie die Parameter in diesem Abschnitt, um den BigQuery Google-Connector zu konfigurieren.

### Glue Connections (empfohlen)
<a name="bigquery-gc"></a>

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

**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 BIGQUERY
```

**Lambda-Umgebungseigenschaften**

**glue\$1connection** – Gibt den Namen der Glue-Connection an, die dem Verbund-Connector zugeordnet ist. 

**Anmerkung**  
Alle Konnektoren, die Glue-Verbindungen verwenden, müssen diese AWS Secrets Manager zum Speichern von Anmeldeinformationen verwenden.
Der mit Glue-Verbindungen erstellte BigQuery Google-Connector unterstützt die Verwendung eines Multiplexing-Handlers nicht.
Der mit Glue-Verbindungen erstellte BigQuery Google-Connector unterstützt nur `ConnectionSchemaVersion` 2.

### Legacy-Connections
<a name="bigquery-legacy"></a>

**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-Datenquellenkonnektoren, die ohne eine zugehörige Glue-Connection erstellt wurden. Verwenden Sie die folgenden Parameter nur, wenn Sie eine frühere Version eines Athena-Datenquellenkonnektors [manuell bereitstellen](connect-data-source-serverless-app-repo.md) oder wenn die `glue_connection`-Umgebungseigenschaft nicht angegeben ist.

**Lambda-Umgebungseigenschaften**
+ **spill\$1bucket** – Gibt den Amazon S3-Bucket für Daten an, die die Lambda-Funktionsgrenzen überschreiten.
+ **spill\$1prefix** – (Optional) Ist standardmäßig ein Unterordner im angegebenen `spill_bucket` genannt `athena-federation-spill`. Wir empfehlen Ihnen, einen Amazon-S3-[Speicher-Lebenszyklus](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) an dieser Stelle zu konfigurieren, um die Überlaufe zu löschen, die älter als eine festgelegte Anzahl von Tagen oder Stunden sind.
+ **spill\$1put\$1request\$1headers** – (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 [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)in der *Amazon Simple Storage Service API-Referenz.*
+ **kms\$1key\$1id** – (Optional) Standardmäßig werden alle Daten, die an Amazon S3 gesendet 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, wie`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, können Sie eine ID einer Verschlüsselung angeben.
+ **disable\$1spill\$1encryption** – (Optional) Bei Einstellung auf `True`, wird die Spill-Verschlüsselung deaktiviert. Die Standardeinstellung ist `False`, sodass Daten, die an S3 übertrragen werden, mit AES-GCM verschlüsselt werden - entweder mit einem zufällig generierten Schlüssel oder mit KMS zum Generieren von Schlüsseln. Das Deaktivieren der Überlauf-Verschlüsselung kann die Leistung verbessern, insbesondere wenn Ihr Überlauf-Standort eine [serverseitige Verschlüsselung](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) verwendet.
+ **gcp\$1projekt\$1id** – Die Projekt-ID (nicht der Projektname), die die Datensätze enthält, aus denen der Konnektor lesen soll (z. B. `semiotic-primer-1234567`).
+ **secret\$1manager\$1gcp\$1creds\$1name — Der Name** des Geheimnisses, das Ihre Anmeldeinformationen im JSON-Format enthält (z. AWS Secrets Manager B.). BigQuery `GoogleCloudPlatformCredentials`
+ **big\$1query\$1endpoint** — (Optional) Die URL eines privaten Endpunkts. BigQuery Verwenden Sie diesen Parameter, wenn Sie BigQuery über einen privaten Endpunkt zugreifen möchten.

## Teilungen und Ansichten
<a name="connectors-bigquery-splits-and-views"></a>

Da der BigQuery Connector die BigQuery Storage Read API zum Abfragen von Tabellen verwendet und die BigQuery Speicher-API keine Ansichten unterstützt, verwendet der Connector den BigQuery Client mit einer einzigen Aufteilung für Ansichten.

## Leistung
<a name="connectors-bigquery-performance"></a>

Um Tabellen abzufragen, verwendet der BigQuery Connector die BigQuery Storage Read API, die ein RPC-basiertes Protokoll verwendet, das schnellen Zugriff auf BigQuery verwalteten Speicher ermöglicht. Weitere Informationen zur BigQuery Storage Read API finden Sie in der Google Cloud-Dokumentation unter [Verwenden der BigQuery Storage Read API zum Lesen von Tabellendaten](https://cloud.google.com/bigquery/docs/reference/storage).

Die Auswahl einer Teilmenge von Spalten beschleunigt die Abfragelaufzeit erheblich und reduziert die gescannten Daten. Der Konnektor ist mit zunehmender Parallelität Abfragefehlern ausgesetzt und in der Regel ein langsamer Konnektor.

Der Athena BigQuery Google-Connector führt einen Prädikat-Pushdown durch, um die von der Abfrage gescannten Daten zu reduzieren. `LIMIT`Klauseln, `ORDER BY` 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
<a name="connectors-bigquery-performance-limit-clauses"></a>

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.

### Top-N-Abfragen
<a name="connectors-bigquery-performance-top-n-queries"></a>

Eine Top-`N`-Abfrage gibt eine Reihenfolge der Ergebnismenge und eine Obergrenze für die Anzahl der zurückgegebenen Zeilen an. Sie können diesen Abfragetyp verwenden, um die höchsten `N`-Höchstwerte oder die höchsten `N`-Minimalwerte für Ihre Datensätze zu ermitteln. Mit `N`-Pushdown gibt der Konnektor nur `N`-geordnete Zeilen an Athena zurück.

### Prädikate
<a name="connectors-bigquery-performance-predicates"></a>

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

Die folgenden Athena Google BigQuery Connector-Operatoren unterstützen das Prädikat Pushdown:
+ **Boolean: **UND, ODER, NICHT
+ **Gleichheit: **GLEICH, NICHT-GLEICH, WENIGER\$1ALS, WENIGER\$1ODER-GLEICH, GRÖSSER\$1ALS, GRÖSSER\$1ODER-GLEICH, IST\$1UNTERSCHIEDEN VON, NULL\$1WENN, IST\$1NULL
+ **Arithmetik: **ADDIEREN, SUBTRAHIEREN, MULTIPLIZIEREN, DIVIDIEREN, MODULIEREN, NEGIEREN
+ **Andere: WIE\$1MUSTER, IN**

### Beispiel für einen kombinierten Pushdown
<a name="connectors-bigquery-performance-pushdown-example"></a>

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%') 
ORDER BY col_a DESC 
LIMIT 10;
```

## Pass-Through-Abfragen
<a name="connectors-bigquery-passthrough-queries"></a>

[Der BigQuery Google-Connector unterstützt Passthrough-Abfragen.](federated-query-passthrough.md) Pass-Through-Abfragen verwenden eine Tabellenfunktion, um Ihre vollständige Abfrage zur Ausführung an die Datenquelle weiterzuleiten.

Um Passthrough-Abfragen mit Google zu verwenden BigQuery, 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 Google weitergeleitet. BigQuery 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
<a name="connectors-bigquery-license-information"></a>

Das Amazon Athena Google BigQuery Connector-Projekt ist unter der [Apache-2.0-Lizenz](https://www.apache.org/licenses/LICENSE-2.0.html) lizenziert.

Durch die Verwendung dieses Connectors erkennen Sie die Einbeziehung von Komponenten von Drittanbietern an. Eine Liste dieser Komponenten finden Sie in der Datei [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-google-bigquery/pom.xml) für diesen Connector, und Sie stimmen den Bedingungen der jeweiligen Drittanbieterlizenzen zu, die in der Datei [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-google-bigquery/LICENSE.txt) auf .com enthalten sind. GitHub

## Weitere Ressourcen
<a name="connectors-bigquery-additional-resources"></a>

Weitere Informationen zu diesem Connector finden Sie auf [der entsprechenden Website](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-google-bigquery) auf GitHub .com.

# Google-Cloud-Storage-Konnektor für Amazon Athena
<a name="connectors-gcs"></a>

Der Google-Cloud-Storage-Konnektor für Amazon Athena 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 eine oder mehrere Parquet- oder CSV-Dateien in einem unpartitionierten oder partitionierten Ordner in einem GCS-Bucket gruppiert haben, können Sie diese in einer [AWS Glue](https://aws.amazon.com/glue/)-Datenbanktabelle organisieren.

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.

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

Einen Artikel, der zeigt, wie Sie mit Athena Abfragen für Parquet- oder CSV-Dateien in einem GCS-Bucket ausführen können, finden Sie im AWS Big-Data-Blogbeitrag [Verwenden Sie Amazon Athena, um in der Google Cloud Platform gespeicherte Daten abzufragen](https://aws.amazon.com/blogs/big-data/use-amazon-athena-to-query-data-stored-in-google-cloud-platform/).

## Voraussetzungen
<a name="connectors-gcs-prerequisites"></a>
+ Richten Sie eine AWS Glue Datenbank und eine Tabelle ein, die Ihrem Bucket und Ihren Ordnern in Google Cloud Storage entsprechen. Die Schritte finden Sie unter [Einrichten von Datenbanken und Tabellen in AWS Glue](#connectors-gcs-setting-up-databases-and-tables-in-glue) weiter unten in diesem Dokument.
+ Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Für weitere Informationen siehe [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md) oder [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md).

## Einschränkungen
<a name="connectors-gcs-limitations"></a>
+ Schreiboperationen wie DDL werden nicht unterstützt.
+ Alle relevanten Lambda-Grenzwerte. Weitere Informationen finden Sie unter [Lambda quotas (Lambda-Kontingente)](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) im *AWS Lambda -Entwicklerhandbuch.*
+ Derzeit unterstützt der Connector nur den `VARCHAR` Typ für Partitionsspalten (`string`oder `varchar` in einem AWS Glue Tabellenschema). Andere Partitionsfeldtypen lösen Fehler aus, wenn Sie sie in Athena abfragen.

## Bedingungen
<a name="connectors-gcs-terms"></a>

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 von Ihrem GCS-Bucket abruft.
+ **Datensatz-Handler** – Ein Lambda-Handler, der Datensätze aus Ihrem GCS-Bucket abruft.
+ **Zusammengesetzter Handler** – Ein Lambda-Handler, der sowohl Metadaten als auch Datensätze aus Ihrem GCS-Bucket abruft.

## Unterstützte Dateitypen
<a name="connectors-gcs-supported-file-types"></a>

Der GCS-Konnektor unterstützt die Parquet- und CSV-Dateitypen.

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

## Parameters
<a name="connectors-gcs-parameters"></a>

Verwenden Sie die Parameter in diesem Abschnitt, um den GCS-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](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) abweichen. Verwenden Sie ab dem 3. Dezember 2024 die folgenden Parameter nur, wenn Sie eine frühere Version eines Athena-Datenquellen-Connectors [manuell bereitstellen](connect-data-source-serverless-app-repo.md).

### Glue Connections (empfohlen)
<a name="connectors-gcs-gc"></a>

Wir empfehlen, dass Sie einen GCS-Connector mithilfe eines Glue-Connections-Objekts konfigurieren. Setzen Sie dazu die `glue_connection`-Umgebungsvariable des GCS-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 GOOGLECLOUDSTORAGE
```

**Lambda-Umgebungseigenschaften**
+ **glue\$1connection** – Gibt den Namen der Glue-Connection an, die dem Verbund-Connector zugeordnet ist.

**Anmerkung**  
Alle Konnektoren, die Glue-Verbindungen verwenden, müssen diese AWS Secrets Manager zum Speichern von Anmeldeinformationen verwenden.
Der mit Glue-Connection erstellte GCS-Connector unterstützt die Verwendung eines Multiplexing-Handlers nicht.
Der mit Glue-Verbindungen erstellte GCS-Konnektor unterstützt nur `ConnectionSchemaVersion` 2.

### Legacy-Connections
<a name="connectors-gcs-legacy"></a>
+ **spill\$1bucket** – Gibt den Amazon S3-Bucket für Daten an, die die Lambda-Funktionsgrenzen überschreiten.
+ **spill\$1prefix** – (Optional) Ist standardmäßig ein Unterordner im angegebenen `spill_bucket` genannt `athena-federation-spill`. Wir empfehlen Ihnen, einen Amazon-S3-[Speicher-Lebenszyklus](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) an dieser Stelle zu konfigurieren, um die Überlaufe zu löschen, die älter als eine festgelegte Anzahl von Tagen oder Stunden sind.
+ **spill\$1put\$1request\$1headers** – (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 [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)in der *Amazon Simple Storage Service API-Referenz.*
+ **kms\$1key\$1id** – (Optional) Standardmäßig werden alle Daten, die an Amazon S3 gesendet 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, wie`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, können Sie eine ID einer Verschlüsselung angeben.
+ **disable\$1spill\$1encryption** – (Optional) Bei Einstellung auf `True`, wird die Spill-Verschlüsselung deaktiviert. Die Standardeinstellung ist `False`, sodass Daten, die an S3 übertrragen werden, mit AES-GCM verschlüsselt werden - entweder mit einem zufällig generierten Schlüssel oder mit KMS zum Generieren von Schlüsseln. Das Deaktivieren der Überlauf-Verschlüsselung kann die Leistung verbessern, insbesondere wenn Ihr Überlauf-Standort eine [serverseitige Verschlüsselung](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) verwendet.
+ **secret\$1manager\$1gcp\$1creds\$1name — Der Name** des Geheimnisses, das Ihre GCS-Anmeldeinformationen im JSON-Format enthält ( AWS Secrets Manager z. B.). `GoogleCloudPlatformCredentials`

## Einrichten von Datenbanken und Tabellen in AWS Glue
<a name="connectors-gcs-setting-up-databases-and-tables-in-glue"></a>

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

### Erstellen einer Datenbank in AWS Glue
<a name="connectors-gcs-creating-a-database-in-glue"></a>

Sie können die AWS Glue Konsole verwenden, um eine Datenbank für die Verwendung mit dem GCS-Connector zu erstellen.

**Um eine Datenbank zu erstellen in AWS Glue**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die AWS Glue Konsole unter [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Wählen Sie im Navigationsbereich **Databases** (Datenbanken) aus.

1. Wählen Sie **Add database** (Datenbank hinzufügen).

1. Geben Sie unter **Name** einen Namen für die Datenbank ein, die Sie mit dem GCS-Konnektor verwenden möchten.

1. Geben Sie als **Standort** `google-cloud-storage-flag` an. Dieser Speicherort teilt dem GCS-Konnektor mit, dass die AWS Glue Datenbank Tabellen für GCS-Daten enthält, die in Athena abgefragt werden sollen. Der Konnektor erkennt Datenbanken in Athena, die dieses Flag haben und ignoriert Datenbanken, die dies nicht tun.

1. Wählen Sie **Datenbank erstellen** aus.

### Erstellen einer Tabelle in AWS Glue
<a name="connectors-gcs-creating-a-table-in-glue"></a>

Jetzt können Sie eine Tabelle für die Datenbank erstellen. Wenn Sie eine AWS Glue Tabelle zur Verwendung mit dem GCS-Connector erstellen, müssen Sie zusätzliche Metadaten angeben.

**Um eine Tabelle in der AWS Glue Konsole zu erstellen**

1. Wählen Sie in der AWS Glue Konsole im Navigationsbereich **Tabellen** aus.

1. Wählen Sie auf der Seite **Tables** (Tabellen) die Option **Add table** (Tabelle hinzufügen) aus.

1. 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 die AWS Glue -Datenbank aus, die Sie für den GCS-Konnektor erstellt haben.
   + **Pfad einbeziehen** – Geben Sie im Abschnitt **Data store** (Datenspeicher) für **Include path** (Pfad einbeziehen) den URI-Speicherort für GCS ein, dem das Präfix `gs://` (z. B. `gs://gcs_table/data/`) vorangestellt ist. Wenn Sie über einen oder mehrere Partitionsordner verfügen, nehmen Sie diese nicht in den Pfad auf.
**Anmerkung**  
Wenn Sie den Pfad eingeben, der nicht zur `s3://`-Tabelle gehört, zeigt die AWS Glue -Konsole einen Fehler an. Sie können diesen Fehler ignorieren. Die Tabelle wird erfolgreich erstellt.
   + **Datenformat** – Wählen Sie als **Classification** (Klassifizierung) **CSV** oder **Parquet** aus.

1. Wählen Sie **Weiter** aus.

1. 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 **Next** (Weiter) und dann **Create** (Erstellen) aus.
   + Um selbst ein Schema zu definieren, folgen Sie den Schritten im nächsten Abschnitt.

### Definieren Sie ein Tabellenschema in AWS Glue
<a name="connectors-gcs-defining-a-table-schema-in-glue"></a>

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

**So definieren Sie ein Schema für Ihre Tabelle in AWS Glue**

1. Wählen Sie auf der Seite **Choose or define schema** (Schema auswählen oder definieren) die Option **Add** (Hinzufügen) aus.

1. Verwenden Sie das Dialogfeld **Add schema entry** (Schemaeintrag hinzufügen), um einen Spaltennamen und einen Datentyp anzugeben.

1. Um die Spalte als Partitionsspalte zu kennzeichnen, wählen Sie die Option **Set as partition key** (Als Partitionsschlüssel festlegen) aus.

1. Wählen Sie **Save** (Speichern), um die Spalte zu speichern.

1. Wählen Sie **Add** (Hinzufügen), um eine weitere Spalte hinzuzufügen.

1. Wenn Sie alle Spalten hinzugefügt haben, wählen Sie **Next** (Weiter).

1. Überprüfen Sie auf der Seite **Review and create** (Überprüfen und erstellen) die Tabelle und wählen Sie dann **Create** (Erstellen) aus.

1. Wenn Ihr Schema Partitionsinformationen enthält, führen Sie die Schritte im nächsten Abschnitt aus, um den Eigenschaften der Tabelle in AWS Glue ein Partitionsmuster hinzuzufügen.

### Hinzufügen eines Partitionsmusters zu Tabelleneigenschaften in AWS Glue
<a name="connectors-gcs-adding-a-partition-pattern-to-table-properties-in-glue"></a>

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

**Um Partitionsinformationen zu Tabelleneigenschaften hinzuzufügen AWS Glue**

1. Wählen Sie auf der Detailseite der Tabelle, in der Sie erstellt haben AWS Glue, **Aktionen**, **Tabelle bearbeiten** aus.

1. Scrollen Sie auf der Seite **Edit table** (Tabelle bearbeiten) nach unten zum Abschnitt **Table properties** (Tabelleneigenschaften).

1. Wählen Sie **Add** (Hinzufügen), um einen Partitionsschlüssel hinzuzufügen.

1. Geben Sie für **Key (Schlüssel)** **partition.pattern** ein. Dieser Schlüssel definiert das Ordnerpfadmuster.

1. Geben Sie für **Value** (Wert) ein Ordnerpfadmuster wie **StateName=\$1\$1statename\$1/ZipCode=\$1\$1zipcode\$1/** ein, wobei **statename** und **zipcode** eingeschlossen von **\$1\$1\$1** Partitionsspaltennamen sind. Der GCS-Konnektor unterstützt sowohl Hive- als auch Nicht-Hive-Partitionsschemas.

1. Klicken Sie auf **Save **, sobald Sie fertig sind.

1. 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 die Tabelle, in der Sie erstellt haben, AWS Glue stehen für Abfragen in Athena zur Verfügung.

## Datentypunterstützung
<a name="connectors-gcs-data-type-support"></a>

Die folgenden Tabellen zeigen die unterstützten Datentypen für CSV und Parquet.

### CSV
<a name="connectors-gcs-csv"></a>


****  

| **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 Werte enthalten true/false  | BOOL | 

### Parquet
<a name="connectors-gcs-parquet"></a>


****  

| **PARQUET** | **Athena (Arrow)** (Athena (Pfeil)) | 
| --- | --- | 
| BINARY | VARCHAR | 
| BOOLEAN | BOOL | 
| DOUBLE | DOUBLE | 
| ENUM | VARCHAR | 
| FIXED\$1LEN\$1BYTE\$1ARRAY | DECIMAL | 
| FLOAT | FLOAT (32-Bit) | 
| INT32 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/connectors-gcs.html)  | 
| INT64 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/connectors-gcs.html)  | 
| INT96 | Zeitstempel | 
| MAP | MAP | 
| STRUCT | STRUCT | 
| LIST | LIST | 

## Erforderliche Berechtigungen
<a name="connectors-gcs-required-permissions"></a>

Ausführliche Informationen zu den für diesen Konnektor erforderlichen IAM-Richtlinien finden Sie im `Policies`-Abschnitt der [athena-gcs.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-gcs/athena-gcs.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 GCS-Konnektor 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.

## Leistung
<a name="connectors-gcs-performance"></a>

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-Konnektor die Partitionsspalten, um den GCS-Ordnerpfad zu verfeinern und das Scannen nicht benötigter Dateien in GCS-Ordnern zu vermeiden.

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

`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 mehr Daten bei größeren Datensätzen als bei kleineren Datensätzen, unabhängig von der angewendeten `LIMIT`-Klausel. Zum Beispiel scannt die Abfrage `SELECT * LIMIT 10000` mehr Daten bei einem größeren zugrunde liegenden Datensatz als bei einem kleineren.

### Lizenzinformationen
<a name="connectors-gcs-license-information"></a>

Durch die Verwendung dieses Connectors erkennen Sie die Einbeziehung von Komponenten von Drittanbietern an. Eine Liste dieser Komponenten finden Sie in der Datei [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-gcs/pom.xml) für diesen Connector, und Sie stimmen den Bedingungen der jeweiligen Drittanbieterlizenzen zu, die in der Datei [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-gcs/LICENSE.txt) auf GitHub .com enthalten sind.

### Weitere Ressourcen
<a name="connectors-gcs-additional-resources"></a>

Weitere Informationen zu diesem Connector finden Sie auf [der entsprechenden Website](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-gcs) auf GitHub .com.

# Amazon Athena Athena-Anschluss HBase
<a name="connectors-hbase"></a>

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

Im Gegensatz zu herkömmlichen relationalen Datenspeichern haben HBase Sammlungen kein festgelegtes Schema. HBasehat keinen Metadatenspeicher. Jeder Eintrag in einer 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 Konnektor eine AWS Glue Datenbank und eine Tabelle erkennt, die Ihren HBase Namespace- und Sammlungsnamen entsprechen, bezieht er seine Schemainformationen aus der entsprechenden AWS Glue Tabelle. 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
<a name="connectors-hbase-prerequisites"></a>
+ Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Für weitere Informationen siehe [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md) oder [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md).

## Parameters
<a name="connectors-hbase-parameters"></a>

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

**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](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) abweichen. Verwenden Sie ab dem 3. Dezember 2024 die folgenden Parameter nur, wenn Sie eine frühere Version eines Athena-Datenquellen-Connectors [manuell bereitstellen](connect-data-source-serverless-app-repo.md).

### Glue Connections (empfohlen)
<a name="connectors-hbase-gc"></a>

Es wird empfohlen, einen HBase Konnektor mithilfe eines Glue-Verbindungsobjekts zu konfigurieren. Setzen Sie dazu die `glue_connection` Umgebungsvariable des HBase Connectors Lambda auf den Namen der zu verwendenden Glue-Verbindung.

**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**
+ **glue\$1connection** – Gibt den Namen der Glue-Connection an, die dem Verbund-Connector zugeordnet ist.

**Anmerkung**  
Alle Konnektoren, die Glue-Verbindungen verwenden, müssen diese AWS Secrets Manager zum Speichern von Anmeldeinformationen verwenden.
Der mit Glue-Verbindungen erstellte HBase Konnektor unterstützt die Verwendung eines Multiplexing-Handlers nicht.
Der mit Glue-Verbindungen erstellte HBase Konnektor unterstützt nur `ConnectionSchemaVersion` 2.

### Legacy-Connections
<a name="connectors-hbase-legacy"></a>
+ **spill\$1bucket** – Gibt den Amazon S3-Bucket für Daten an, die die Lambda-Funktionsgrenzen überschreiten.
+ **spill\$1prefix** – (Optional) Ist standardmäßig ein Unterordner im angegebenen `spill_bucket` genannt `athena-federation-spill`. Wir empfehlen Ihnen, einen Amazon-S3-[Speicher-Lebenszyklus](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) an dieser Stelle zu konfigurieren, um die Überlaufe zu löschen, die älter als eine festgelegte Anzahl von Tagen oder Stunden sind.
+ **spill\$1put\$1request\$1headers** – (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 [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)in der *Amazon Simple Storage Service API-Referenz.*
+ **kms\$1key\$1id** – (Optional) Standardmäßig werden alle Daten, die an Amazon S3 gesendet 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, wie`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, können Sie eine ID einer Verschlüsselung angeben.
+ **disable\$1spill\$1encryption** – (Optional) Bei Einstellung auf `True`, wird die Spill-Verschlüsselung deaktiviert. Die Standardeinstellung ist `False`, sodass Daten, die an S3 übertrragen werden, mit AES-GCM verschlüsselt werden - entweder mit einem zufällig generierten Schlüssel oder mit KMS zum Generieren von Schlüsseln. Das Deaktivieren der Überlauf-Verschlüsselung kann die Leistung verbessern, insbesondere wenn Ihr Überlauf-Standort eine [serverseitige Verschlüsselung](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) verwendet.
+ **disable\$1glue** — (Optional) Falls vorhanden und auf true gesetzt, versucht der Connector nicht, zusätzliche Metadaten von abzurufen. AWS Glue
+ **glue\$1catalog** – (Optional) Verwenden Sie diese Option, um einen [kontoübergreifenden AWS Glue -Katalog](data-sources-glue-cross-account.md) anzugeben. Standardmäßig versucht der Connector, Metadaten von seinem eigenen Konto abzurufen. AWS Glue 
+ **default\$1hbase** — Gibt, falls vorhanden, eine HBase Verbindungszeichenfolge an, die verwendet werden soll, wenn keine katalogspezifische Umgebungsvariable vorhanden ist.
+ **enable\$1case\$1insensitive\$1match** — (Optional) Wenn, führt Suchen ohne Berücksichtigung der Groß- und Kleinschreibung anhand von Tabellennamen in durch. `true` HBase Der Standardwert ist `false`. Verwenden Sie dies, wenn Ihre Abfrage Tabellennamen in Großbuchstaben enthält.

#### Angeben von Verbindungszeichenfolgen
<a name="connectors-hbase-specifying-connection-strings"></a>

Sie können eine oder mehrere Eigenschaften angeben, die die HBase Verbindungsdetails für die Instanzen definieren, die Sie mit dem Konnektor verwenden. HBase Legen Sie dazu eine Lambda-Umgebungsvariable fest, die dem Katalognamen entspricht, den Sie in Athena verwenden möchten. Nehmen wir beispielsweise an, Sie möchten die folgenden Abfragen verwenden, um zwei verschiedene HBase Instanzen 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`. Bei jedem Wert sollte es sich um eine HBase Verbindungszeichenfolge im folgenden Format handeln:

```
master_hostname:hbase_port:zookeeper_port
```

##### Verwendung von Secrets
<a name="connectors-hbase-using-secrets"></a>

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](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) oder einen [VPC-Endpunkt](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html) 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
<a name="connectors-hbase-setting-up-databases-and-tables-in-aws-glue"></a>

Die integrierte Schemainferenz des Konnektors unterstützt nur Werte, die HBase als Zeichenketten 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 zu aktivieren HBase, 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 von Benennungskonventionen für HBase Spaltenfamilien ist optional, aber nicht erforderlich.

**Um eine AWS Glue Tabelle für zusätzliche Metadaten zu verwenden**

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 zeigt dem HBase Konnektor an, dass der Konnektor die Tabelle für zusätzliche 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 zwischen den beiden vom Connector unterstützten Modi für die Werteserialisierung umzuschalten. Wenn dieses Feld nicht vorhanden ist, geht der Konnektor standardmäßig davon aus, dass alle Werte HBase als Zeichenketten gespeichert sind. Daher versucht er, Datentypen wie `INT``BIGINT`, und `DOUBLE` from HBase als Zeichenketten zu analysieren. Wenn in diesem Feld ein Wert in der Tabelle angegeben ist AWS Glue, wechselt der Konnektor in den „systemeigenen“ Speichermodus und versucht`INT`,,`BIGINT`, und `DOUBLE` als Byte zu lesen`BIT`, indem er die folgenden Funktionen verwendet:

     ```
     ByteBuffer.wrap(value).getInt() 
     ByteBuffer.wrap(value).getLong() 
     ByteBuffer.wrap(value).get() 
     ByteBuffer.wrap(value).getDouble()
     ```

1. Stellen Sie sicher, dass Sie die in diesem Dokument aufgeführten Datentypen verwenden, die für AWS Glue geeignet sind.

### Modellieren von Spaltenfamilien
<a name="connectors-hbase-modeling-column-families"></a>

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

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.\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/images/connectors-hbase-1.png)


## Datentypunterstützung
<a name="connectors-hbase-data-type-support"></a>

Der Konnektor ruft alle HBase Werte als Basis-Byte-Typ ab. Basierend darauf, wie Sie Ihre Tabellen im AWS Glue Datenkatalog definiert haben, ordnet er die Werte dann einem der Apache Arrow-Datentypen in der folgenden Tabelle zu.


****  

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

**Anmerkung**  
Wenn Sie Ihre Metadaten nicht ergänzen, verwendet die Schemainferenz des Connectors nur die Datentypen `BIGINT``FLOAT8`, und`VARCHAR`. AWS Glue 

## Erforderliche Berechtigungen
<a name="connectors-hbase-required-permissions"></a>

Ausführliche Informationen zu den für diesen Konnektor erforderlichen IAM-Richtlinien finden Sie im `Policies`-Abschnitt der [athena-hbase.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-hbase/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 Konnektor benötigt nur Lesezugriff auf die, um Schemainformationen AWS Glue Data Catalog abzurufen.
+ **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.
+ **VPC-Zugriff** — Der Connector benötigt die Fähigkeit, Schnittstellen an Ihre VPC anzuhängen und zu trennen, damit er sich mit ihr verbinden und mit Ihren Instances kommunizieren kann. HBase 

## Leistung
<a name="connectors-hbase-performance"></a>

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

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 variable Abfrageausführungszeiten. Möglicherweise müssen Sie Ihre Abfragen mehrmals wiederholen, damit diese erfolgreich sind. Der HBase Konnektor ist aufgrund der Parallelität widerstandsfähig gegen Drosselung.

## Pass-Through-Abfragen
<a name="connectors-hbase-passthrough-queries"></a>

Der HBase Connector unterstützt [Passthrough-Abfragen](federated-query-passthrough.md) und basiert auf NoSQL. Informationen zum Abfragen von Apache HBase mithilfe von Filtern finden Sie in der [Apache-Dokumentation unter Filtersprache](https://hbase.apache.org/book.html#thrift.filter_language).

Verwenden Sie die folgende Syntax HBase, um Passthrough-Abfragen mit 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 Datenbank nach Mitarbeitern im Alter von 24 oder 30 Jahren. `default`

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

## Lizenzinformationen
<a name="connectors-hbase-license-information"></a>

Das Amazon Athena HBase Connector-Projekt ist unter der [Apache-2.0-Lizenz](https://www.apache.org/licenses/LICENSE-2.0.html) lizenziert.

## Weitere Ressourcen
<a name="connectors-hbase-additional-resources"></a>

Weitere Informationen zu diesem Connector finden Sie auf [der entsprechenden Website unter .com](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-hbase). GitHub

# Amazon Athena Hortonworks Konnektor
<a name="connectors-hortonworks"></a>

Der Amazon Athena-Konnektor für Hortonworks ermöglicht es Amazon Athena, SQL-Abfragen auf der Cloudera-[Hortonworks](https://www.cloudera.com/products/hdp.html)-Datenplattform auszuführen. Der Konnektor wandelt Ihre Athena-SQL-Abfragen in ihre äquivalente HiveQL-Syntax um.

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

## Voraussetzungen
<a name="connectors-hive-prerequisites"></a>
+ Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Für weitere Informationen siehe [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md) oder [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md).

## Einschränkungen
<a name="connectors-hortonworks-limitations"></a>
+ 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)](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) im *AWS Lambda -Entwicklerhandbuch.*

## Bedingungen
<a name="connectors-hortonworks-terms"></a>

Die folgenden Begriffe beziehen sich auf den Hortonworks Hive-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 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.

## Parameters
<a name="connectors-hortonworks-parameters"></a>

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

### Verbindungszeichenfolge
<a name="connectors-hortonworks-connection-string"></a>

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

```
hive://${jdbc_connection_string}
```

### Verwenden eines Multiplexing-Handlers
<a name="connectors-hortonworks-using-a-multiplexing-handler"></a>

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
<a name="connectors-hortonworks-multiplexing-handler-parameters"></a>


****  

| Parameter | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | 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\$1connection\$1string. | 
| default | Erforderlich Die standardmäßige Verbindungszeichenfolge. Diese Zeichenfolge wird verwendet, wenn der lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME \$1 Katalog | 

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?\$1\$1Test/RDS/hive1\$1 | 
| hive\$1catalog1\$1connection\$1string | hive://jdbc:hive2://hive1:10000/default?\$1\$1Test/RDS/hive1\$1 | 
| hive\$1catalog2\$1connection\$1string | hive://jdbc:hive2://hive2:10000/default?UID=sample&PWD=sample | 

#### Bereitstellen von Anmeldeinformationen
<a name="connectors-hortonworks-providing-credentials"></a>

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 hartcodierten Geheimnissen nach AWS Secrets Manager finden Sie AWS Secrets Manager im *AWS Secrets Manager Benutzerhandbuch* unter [Verschieben von hartcodierten Geheimnissen nach](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html).
+ **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](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) oder einen [VPC-Endpunkt verfügen, um eine Verbindung zu Secrets](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html) Manager herzustellen.

  Sie können den Namen eines Geheimnisses in AWS Secrets Manager Ihre 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, eine Rotation der Anmeldeinformationen zu verwenden AWS Secrets Manager . 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/hive1host}`.

```
hive://jdbc:hive2://hive1host:10000/default?...&${Test/RDS/hive1host}&...
```

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

```
hive://jdbc:hive2://hive1host:10000/default?...&UID=sample2&PWD=sample2&...
```

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

### Verwenden eines einzelnen Verbindungs-Handlers
<a name="connectors-hortonworks-using-a-single-connection-handler"></a>

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


****  

| Handler-Typ | Klasse | 
| --- | --- | 
| Composite Handler | HiveCompositeHandler | 
| Metadaten-Handler | HiveMetadataHandler | 
| Record Handler | HiveRecordHandler | 

#### Parameter für Einzelverbindungs-Handler
<a name="connectors-hortonworks-single-connection-handler-parameters"></a>


****  

| Parameter | Description | 
| --- | --- | 
| 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 Hortonworks Hive-Instance, die von einer Lambda-Funktion unterstützt wird.


****  

| Eigenschaft | Wert | 
| --- | --- | 
| default | hive://jdbc:hive2://hive1host:10000/default?secret=\$1\$1Test/RDS/hive1host\$1 | 

### Überlauf-Parameter
<a name="connectors-hortonworks-spill-parameters"></a>

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 | Description | 
| --- | --- | 
| spill\$1bucket | Erforderlich Überlauf-Bucket-Name. | 
| spill\$1prefix | Erforderlich Schlüssel-Prefix für den Überlauf-Bucket. | 
| spill\$1put\$1request\$1headers | (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. \$1"x-amz-server-side-encryption" : "AES256"\$1). Weitere mögliche Header finden Sie [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)in der Amazon Simple Storage Service API-Referenz. | 

## Datentypunterstützung
<a name="connectors-hortonworks-data-type-support"></a>

Die folgende Tabelle zeigt die entsprechenden Datentypen für JDBC, Hortonworks Hive und Arrow.


****  

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

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

## Partitionen und Splits
<a name="connectors-hortonworks-partitions-and-splits"></a>

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
<a name="connectors-hortonworks-performance"></a>

Hortonworks Hive unterstützt statische Partitionen. Der Athena-Hortonworks-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. Die Auswahl einer Teilmenge von Spalten beschleunigt die Abfragelaufzeit erheblich und reduziert die gescannten Daten. Der Hortonworks-Hive-Konnektor ist aufgrund der Gleichzeitigkeit widerstandsfähig gegenüber Drosselung.

Der Athena-Hortonworks-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
<a name="connectors-hive-performance-limit-clauses"></a>

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
<a name="connectors-hive-performance-predicates"></a>

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

Die folgenden Operator des Athena-Hortonworks-Hive-Konnektors unterstützen Prädikat-Pushdown:
+ **Boolean: **UND, ODER, NICHT
+ **Gleichheit: **GLEICH, NICHT GLEICH, WENIGER\$1ALS, WENIGER\$1ODER\$1GLEICH, GRÖSSER\$1ALS, GRÖSSER\$1ODER\$1GLEICH, IST\$1NULL
+ **Arithmetik: **ADDIEREN, SUBTRAHIEREN, MULTIPLIZIEREN, DIVIDIEREN, MODULIEREN, NEGIEREN
+ **Andere: WIE\$1MUSTER, IN**

### Beispiel für einen kombinierten Pushdown
<a name="connectors-hive-performance-pushdown-example"></a>

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
<a name="connectors-hive-passthrough-queries"></a>

Der Hortonworks-Hive-Connector unterstützt [Pass-Through-Abfragen](federated-query-passthrough.md). Pass-Through-Abfragen verwenden eine Tabellenfunktion, um Ihre vollständige Abfrage zur Ausführung an die Datenquelle weiterzuleiten.

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

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

Mit der folgenden Beispielabfrage wird eine Abfrage an eine Datenquelle in Hortonworks-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
<a name="connectors-hive-license-information"></a>

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](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-hortonworks-hive/pom.xml) für diesen Connector und stimmen den Bedingungen der jeweiligen Drittanbieterlizenzen zu, die in der Datei [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-hortonworks-hive/LICENSE.txt) auf GitHub .com enthalten sind.

## Weitere Ressourcen
<a name="connectors-hive-additional-resources"></a>

Die neuesten Informationen zur JDBC-Treiberversion finden Sie in der Datei [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-hortonworks-hive/pom.xml) für den Hortonworks Hive-Connector auf .com. GitHub

[Weitere Informationen zu diesem Connector finden Sie auf der entsprechenden Website unter .com.](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-hortonworks-hive) GitHub

# Apache-Kafka-Konnektor von Amazon Athena
<a name="connectors-kafka"></a>

Der Amazon-Athena-Konnektor für Apache Kafka ermöglicht es Amazon Athena, SQL-Abfragen für Ihre Apache-Kafka-Themen auszuführen. Verwenden Sie diesen Konnektor, um [Apache-Kafka](https://kafka.apache.org/)-Themen als Tabellen und Nachrichten als Zeilen in Athena anzuzeigen.

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

## Voraussetzungen
<a name="connectors-kafka-prerequisites"></a>

Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Für weitere Informationen siehe [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md) oder [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md).

## Einschränkungen
<a name="connectors-kafka-limitations"></a>
+ Schreiboperationen wie DDL werden nicht unterstützt.
+ Alle relevanten Lambda-Grenzwerte. Weitere Informationen finden Sie unter [Lambda quotas (Lambda-Kontingente)](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) im *AWS Lambda -Entwicklerhandbuch.*
+ Datums- und Zeitstempeldatentypen in Filterbedingungen müssen in geeignete Datentypen umgewandelt werden.
+ Datums- und Zeitstempel-Datentypen werden für den CSV-Dateityp nicht unterstützt und als Varchar-Werte behandelt.
+ Die Zuordnung zu verschachtelten JSON-Feldern wird nicht unterstützt. Der Konnektor ordnet nur Felder der obersten Ebene zu.
+ Der Konnektor unterstützt keine komplexen Typen. Komplexe Typen werden als Zeichenfolgen interpretiert.
+ Verwenden Sie zum Extrahieren oder Arbeiten mit komplexen JSON-Werten die in Athena verfügbaren JSON-bezogenen Funktionen. Weitere Informationen finden Sie unter [Extrahieren Sie JSON-Daten aus Zeichenfolgen](extracting-data-from-JSON.md).
+ Der Konnektor unterstützt keinen Zugriff auf Kafka-Nachrichtenmetadaten.

## Bedingungen
<a name="connectors-kafka-terms"></a>
+ **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.
+ **Kafka-Endpunkt** – Eine Textzeichenfolge, die eine Verbindung zu einer Kafka-Instance herstellt.

## Cluster-Kompatibilität
<a name="connectors-kafka-cluster-compatibility"></a>

Der Kafka-Konnektor kann mit den folgenden Cluster-Typen verwendet werden.
+ **Eigenständiges Kafka** – Eine direkte Verbindung zu Kafka (authentifiziert oder unauthentifiziert).
+ **Confluent** – Eine direkte Verbindung zu Confluent Kafka. *Informationen zur Verwendung von Athena mit Confluent-Kafka-Daten finden Sie unter [Visualisieren von Confluent-Daten in Quick using Amazon Athena im Business Intelligence-Blog](https://aws.amazon.com/blogs/business-intelligence/visualize-confluent-data-in-amazon-quicksight-using-amazon-athena/).AWS * 

### Zu Confluent verbinden
<a name="connectors-kafka-connecting-to-confluent"></a>

Die Verbindung zu Confluent erfordert die folgenden Schritte:

1. Generieren Sie einen API-Schlüssel von Confluent.

1. Speichern Sie den Benutzernamen und das Passwort für den Confluent-API-Schlüssel in AWS Secrets Manager.

1. Geben Sie den geheimen Namen für die `secrets_manager_secret`-Umgebungsvariable im Kafka-Konnektor an.

1. Folgen Sie den Schritten im [Den Kafka-Konnektor einrichten](#connectors-kafka-setup)-Abschnitt dieses Dokuments.

## Unterstützte Authentifizierungsmethoden
<a name="connectors-kafka-supported-authentication-methods"></a>

Der Konnektor unterstützt die folgenden Authentifizierungsmethoden.
+ [SSL](https://kafka.apache.org/documentation/#security_ssl)
+ [SASL/SCRAM](https://kafka.apache.org/documentation/#security_sasl_scram)
+ SASL/PLAIN
+ SASL/PLAINTEXT
+ NO\$1AUTH
+ **Selbstverwaltete Kafka** - und Confluent-Plattform — SSL, NO\$1AUTH SASL/SCRAM, SASL/PLAINTEXT
+ **Selbstverwaltetes Kafka und Confluent Cloud** – SASL/PLAIN

Weitere Informationen finden Sie unter [Konfigurieren der Authentifizierung für den Athena-Kafka-Konnektor](#connectors-kafka-setup-configuring-authentication).

## Unterstützte Eingabedatenformate
<a name="connectors-kafka-supported-input-data-formats"></a>

Der Konnektor unterstützt die folgenden Eingabedatenformate.
+ JSON
+ CSV
+ AVRO
+ PROTOBUF (PROTOCOL BUFFERS)

## Parameters
<a name="connectors-kafka-parameters"></a>

Verwenden Sie die Parameter in diesem Abschnitt, um den Athena-Kafka-Konnektor zu konfigurieren.
+ **auth\$1type** – Gibt den Authentifizierungstyp des Clusters an. Der Konnektor unterstützt die folgenden Arten der Authentifizierung:
  + **NO\$1AUTH** – Stellen Sie eine direkte Verbindung zu Kafka her (z. B. zu einem Kafka-Cluster, der über eine EC2-Instance bereitgestellt wird, die keine Authentifizierung verwendet).
  + **SASL\$1SSL\$1PLAIN** — Diese Methode verwendet das Sicherheitsprotokoll und den SASL-Mechanismus. `SASL_SSL` `PLAIN` Weitere Informationen finden Sie unter [SASL-Konfiguration](https://kafka.apache.org/documentation/#security_sasl_config) in der Apache-Kafka-Dokumentation.
  + **SASL\$1PLAINTEXT\$1PLAIN** — Diese Methode verwendet das `SASL_PLAINTEXT` Sicherheitsprotokoll und den `PLAIN` SASL-Mechanismus. Weitere Informationen finden Sie unter [SASL-Konfiguration](https://kafka.apache.org/documentation/#security_sasl_config) in der Apache-Kafka-Dokumentation.
  + **SASL\$1SSL\$1SCRAM\$1 SHA512** — Sie können diesen Authentifizierungstyp verwenden, um den Zugriff auf Ihre Apache Kafka-Cluster zu kontrollieren. Diese Methode speichert den Benutzernamen und das Passwort in. AWS Secrets Manager Das Geheimnis muss dem Kafka-Cluster zugeordnet sein. Weitere Informationen finden Sie unter [Authentifizierung mit SASL/SCRAM](https://kafka.apache.org/documentation/#security_sasl_scram) in der Apache-Kafka-Dokumentation.
  + **SASL\$1PLAINTEXT\$1SCRAM\$1 SHA512** — Diese Methode verwendet das `SASL_PLAINTEXT` Sicherheitsprotokoll und den Mechanismus. `SCRAM_SHA512 SASL` Diese Methode verwendet Ihren Benutzernamen und Ihr Passwort, die in gespeichert sind. AWS Secrets Manager Weitere Informationen finden Sie unter [SASL-Konfiguration](https://kafka.apache.org/documentation/#security_sasl_config) in der Apache-Kafka-Dokumentation.
  + **SSL** – SSL-Authentifizierung verwendet Schlüsselspeicher- und Vertrauensspeicherdateien, um eine Verbindung mit dem Apache-Kafka-Cluster herzustellen. Sie müssen die Trust-Store- und Key-Store-Dateien generieren, sie in einen Amazon-S3-Bucket hochladen und die Referenz auf Amazon S3 angeben, wenn Sie den Konnektor bereitstellen. Der Schlüsselspeicher, der Vertrauensspeicher und der SSL-Schlüssel werden in gespeichert AWS Secrets Manager. Ihr Client muss den AWS geheimen Schlüssel bereitstellen, wenn der Connector bereitgestellt wird. Weitere Informationen finden Sie unter [Authentifizierung mit SSL](https://kafka.apache.org/documentation/#security_ssl) in der Apache-Kafka-Dokumentation.

    Weitere Informationen finden Sie unter [Konfigurieren der Authentifizierung für den Athena-Kafka-Konnektor](#connectors-kafka-setup-configuring-authentication).
+ **certificates\$1s3\$1reference** – Der Amazon-S3-Speicherort, der die Zertifikate enthält (die Schlüsselspeicher- und Vertrauensspeicherdateien).
+ **disable\$1spill\$1encryption** – (Optional) Bei Einstellung auf `True`, wird die Spill-Verschlüsselung deaktiviert. Die Standardeinstellung ist `False`, sodass Daten, die an S3 übertrragen werden, mit AES-GCM verschlüsselt werden - entweder mit einem zufällig generierten Schlüssel oder mit KMS zum Generieren von Schlüsseln. Das Deaktivieren der Überlauf-Verschlüsselung kann die Leistung verbessern, insbesondere wenn Ihr Überlauf-Standort eine [serverseitige Verschlüsselung](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) verwendet.
+ **kafka\$1endpoint** – Die Endpunktdetails, die Kafka bereitgestellt werden sollen.
+ **schema\$1registry\$1url**  – Die URL-Adresse für Schema-Registry (zum Beispiel, `http://schema-registry.example.org:8081`). Gilt für die Datenformate `AVRO` und `PROTOBUF`. Athena unterstützt nur Confluent-Schema-Registry.
+ **secrets\$1manager\$1secret** – Der Name des AWS -Geheimnisses, in dem die Anmeldeinformationen gespeichert sind.
+ **Überlauf-Parameter** – Lambda-Funktionen speichern vorübergehend („Überlauf“) Daten, die nicht in den Speicher von Amazon S3 passen. Alle Datenbank-Instances, auf die mit derselben Lambda-Funktion zugegriffen wird, werden an denselben Speicherort verschoben. Verwenden Sie die Parameter in der folgenden Tabelle, um den Überlauf-Standort anzugeben.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/connectors-kafka.html)
+ **Subnetz IDs** — Ein oder mehrere Subnetze IDs , die dem Subnetz entsprechen, das die Lambda-Funktion für den Zugriff auf Ihre Datenquelle verwenden kann.
  + **Öffentlicher Kafka-Cluster oder Standard-Confluent-Cloud-Cluster** – Ordnen Sie den Konnektor einem privaten Subnetz zu, das über ein NAT-Gateway verfügt.
  + **Confluent-Cloud-Cluster mit privater Konnektivität** – Ordnen Sie den Konnektor einem privaten Subnetz zu, das eine Route zum Confluent-Cloud-Cluster hat.
    + Für [AWS -Transit-Gateway](https://docs.confluent.io/cloud/current/networking/aws-transit-gateway.html) müssen sich die Subnetze in einer VPC befinden, die an dasselbe Transit-Gateway angeschlossen ist, das Confluent Cloud verwendet.
    + Für [VPC-Peering](https://docs.confluent.io/cloud/current/networking/peering/aws-peering.html) müssen sich die Subnetze in einer VPC befinden, die per Peering mit Confluent-Cloud-VPC verbunden ist.
    + Für [AWS PrivateLink](https://docs.confluent.io/cloud/current/networking/private-links/aws-privatelink.html) müssen sich die Subnetze in einer VPC befinden die eine Route zu den VPC-Endpunkten hat, die eine Verbindung zu Confluent Cloud herstellen.

**Anmerkung**  
Wenn Sie den Konnektor in einer VPC bereitstellen, um auf private Ressourcen zuzugreifen und auch eine Verbindung zu einem öffentlich zugänglichen Service wie Confluent herstellen möchten, müssen Sie den Konnektor einem privaten Subnetz zuordnen, das über ein NAT-Gateway verfügt. Weitere Informationen finden Sie unter [NAT-Gateways](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) im Amazon-VPC-Benutzerhandbuch.

## Datentypunterstützung
<a name="connectors-kafka-data-type-support"></a>

Die folgende Tabelle zeigt die entsprechenden Datentypen, die für Kafka und Apache Arrow unterstützt werden.


****  

| Kafka | Arrow | 
| --- | --- | 
| CHAR | VARCHAR | 
| VARCHAR | VARCHAR | 
| TIMESTAMP (ZEITSTEMPEL) | MILLISEKUNDE | 
| DATE | TAG | 
| BOOLEAN | BOOL | 
| SMALLINT | SMALLINT | 
| INTEGER | INT | 
| BIGINT | BIGINT | 
| DECIMAL | FLOAT8 | 
| DOUBLE | FLOAT8 | 

## Partitionen und Splits
<a name="connectors-kafka-partitions-and-splits"></a>

Kafka-Themen sind in Partitionen unterteilt. Jede Partition ist geordnet. Jede Nachricht in einer Partition hat eine inkrementelle ID, die *Offset* genannt wird. Jede Kafka-Partition wird für die parallele Verarbeitung in weitere Splits unterteilt. Daten sind für den in Kafka-Clustern konfigurierten Aufbewahrungszeitraum verfügbar.

## Best Practices
<a name="connectors-kafka-best-practices"></a>

Verwenden Sie als bewährte Methode bei der Abfrage von Athena das Prädikat-Pushdown, wie in den folgenden Beispielen.

```
SELECT * 
FROM "kafka_catalog_name"."glue_schema_registry_name"."glue_schema_name" 
WHERE integercol = 2147483647
```

```
SELECT * 
FROM "kafka_catalog_name"."glue_schema_registry_name"."glue_schema_name" 
WHERE timestampcol >= TIMESTAMP '2018-03-25 07:30:58.878'
```

## Den Kafka-Konnektor einrichten
<a name="connectors-kafka-setup"></a>

Bevor Sie den Konnektor verwenden können, müssen Sie Ihren Apache-Kafka-Cluster einrichten, die [AWS Glue -Schema-Registry](https://docs.aws.amazon.com/glue/latest/dg/schema-registry.html) verwenden, um Ihr Schema zu definieren, und die Authentifizierung für den Konnektor konfigurieren.

Beachten Sie bei der Arbeit mit der AWS Glue Schema Registry die folgenden Punkte:
+ Stellen Sie sicher, dass der Text im Feld **Description** (Beschreibung) des AWS Glue -Schema-Registry die Zeichenfolge `{AthenaFederationKafka}` enthält. Diese Markierungszeichenfolge ist für AWS Glue Registries erforderlich, die Sie mit dem Amazon Athena Kafka-Konnektor verwenden.
+ Verwenden Sie für Ihre Datenbanknamen und -tabellen nur Kleinbuchstaben, um eine optimale Leistung zu erzielen. Bei der Verwendung gemischter Groß- und Kleinschreibung führt der Konnektor eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung durch, die rechenintensiver ist.

**Um Ihre Apache Kafka-Umgebung und Schema Registry einzurichten AWS Glue**

1. Richten Sie Ihre Apache-Kafka-Umgebung ein.

1. Laden Sie die Kafka-Themenbeschreibungsdatei (d. h. ihr Schema) im JSON-Format in die AWS Glue Schema Registry hoch. Weitere Informationen finden Sie unter [Integration mit AWS Glue Schema Registry](https://docs.aws.amazon.com/glue/latest/dg/schema-registry-integrations.html) im AWS Glue Entwicklerhandbuch.

1. Um das `AVRO` oder `PROTOBUF`-Datenformat zu verwenden, wenn Sie das Schema in der AWS Glue-Schema-Registry definieren:
   + Geben Sie als **Schemaname** den Namen des Kafka-Themas in derselben Groß-/Kleinschreibung wie das Original ein.
   + Wählen Sie als **Datenformat** **Apache Avro** oder **Protokollpuffer** aus.

    Beispielschemata finden Sie im folgenden Abschnitt.

### Schemabeispiele für die AWS Glue Schema Registry
<a name="connectors-kafka-setup-schema-examples"></a>

Verwenden Sie das Format der Beispiele in diesem Abschnitt, wenn Sie Ihr Schema in das [AWS Glue -Schema Registry](https://docs.aws.amazon.com/glue/latest/dg/schema-registry.html) hochladen.

#### Beispielschema für einen JSON-Typ
<a name="connectors-kafka-setup-schema-examples-json"></a>

Im folgenden Beispiel wird das Schema, das in der AWS Glue Schemaregistry erstellt werden soll, `json` als Wert für angegeben `dataFormat` und `datatypejson` für verwendet`topicName`.

**Anmerkung**  
Der Wert für `topicName` sollte die gleiche Schreibweise wie der Themenname in Kafka verwenden. 

```
{
  "topicName": "datatypejson",
  "message": {
    "dataFormat": "json",
    "fields": [
      {
        "name": "intcol",
        "mapping": "intcol",
        "type": "INTEGER"
      },
      {
        "name": "varcharcol",
        "mapping": "varcharcol",
        "type": "VARCHAR"
      },
      {
        "name": "booleancol",
        "mapping": "booleancol",
        "type": "BOOLEAN"
      },
      {
        "name": "bigintcol",
        "mapping": "bigintcol",
        "type": "BIGINT"
      },
      {
        "name": "doublecol",
        "mapping": "doublecol",
        "type": "DOUBLE"
      },
      {
        "name": "smallintcol",
        "mapping": "smallintcol",
        "type": "SMALLINT"
      },
      {
        "name": "tinyintcol",
        "mapping": "tinyintcol",
        "type": "TINYINT"
      },
      {
        "name": "datecol",
        "mapping": "datecol",
        "type": "DATE",
        "formatHint": "yyyy-MM-dd"
      },
      {
        "name": "timestampcol",
        "mapping": "timestampcol",
        "type": "TIMESTAMP",
        "formatHint": "yyyy-MM-dd HH:mm:ss.SSS"
      }
    ]
  }
}
```

#### Beispielschema für einen CSV-Typ
<a name="connectors-kafka-setup-schema-examples-csv"></a>

Im folgenden Beispiel wird das Schema, das in der AWS Glue Schemaregistry erstellt werden soll, `csv` als Wert für angegeben `dataFormat` und verwendet `datatypecsvbulk` für`topicName`. Der Wert für `topicName` sollte die gleiche Schreibweise wie der Themenname in Kafka verwenden.

```
{
  "topicName": "datatypecsvbulk",
  "message": {
    "dataFormat": "csv",
    "fields": [
      {
        "name": "intcol",
        "type": "INTEGER",
        "mapping": "0"
      },
      {
        "name": "varcharcol",
        "type": "VARCHAR",
        "mapping": "1"
      },
      {
        "name": "booleancol",
        "type": "BOOLEAN",
        "mapping": "2"
      },
      {
        "name": "bigintcol",
        "type": "BIGINT",
        "mapping": "3"
      },
      {
        "name": "doublecol",
        "type": "DOUBLE",
        "mapping": "4"
      },
      {
        "name": "smallintcol",
        "type": "SMALLINT",
        "mapping": "5"
      },
      {
        "name": "tinyintcol",
        "type": "TINYINT",
        "mapping": "6"
      },
      {
        "name": "floatcol",
        "type": "DOUBLE",
        "mapping": "7"
      }
    ]
  }
}
```

#### Beispielschema für einen AVRO-Typ
<a name="connectors-kafka-setup-schema-examples-avro"></a>

Das folgende Beispiel wird verwendet, um ein Avro-basiertes Schema in der AWS Glue -Schema Registry zu erstellen. Wenn Sie das Schema in der AWS Glue Schemaregistry definieren, geben Sie für **Schemaname den Namen** des Kafka-Themas in derselben Groß-/Kleinschreibung wie das Original ein, und für **Datenformat** wählen Sie **Apache Avro**. Da Sie diese Informationen direkt in der Registrierung angeben, sind die `dataformat` und `topicName`-Felder nicht erforderlich.

```
{
    "type": "record",
    "name": "avrotest",
    "namespace": "example.com",
    "fields": [{
            "name": "id",
            "type": "int"
        },
        {
            "name": "name",
            "type": "string"
        }
    ]
}
```

#### Beispielschema für einen PROTOBUF-Typ
<a name="connectors-kafka-setup-schema-examples-protobuf"></a>

Das folgende Beispiel wird verwendet, um ein PROTOBUF-basiertes Schema in der AWS Glue -Schema-Registry zu erstellen. **Wenn Sie das Schema in der AWS Glue Schemaregistry definieren, geben Sie für **Schemaname den Namen** des Kafka-Themas in derselben Groß-/Kleinschreibung wie das Original ein, und für **Datenformat** wählen Sie Protocol Buffers.** Da Sie diese Informationen direkt in der Registrierung angeben, sind die `dataformat` und `topicName`-Felder nicht erforderlich. Die erste Zeile definiert das Schema als PROTOBUF.

```
syntax = "proto3";
message protobuftest {
string name = 1;
int64 calories = 2;
string colour = 3;
}
```

Weitere Informationen zum Hinzufügen einer Registrierung und von Schemas zur Schemaregistry finden Sie in der AWS Glue Dokumentation unter [Erste Schritte mit Schema Registry](https://docs.aws.amazon.com/glue/latest/dg/schema-registry-gs.html). AWS Glue 

### Konfigurieren der Authentifizierung für den Athena-Kafka-Konnektor
<a name="connectors-kafka-setup-configuring-authentication"></a>

Sie können eine Vielzahl von Methoden verwenden, um sich bei Ihrem Apache Kafka-Cluster zu authentifizieren, einschließlich SSL. SASL/SCRAM, SASL/PLAIN, and SASL/PLAINTEXT

Die folgende Tabelle zeigt die Authentifizierungstypen für den Konnektor sowie das jeweilige Sicherheitsprotokoll und den SASL-Mechanismus. Weitere Informationen zur Sicherheit von Kafka finden Sie unter [Sicherheit](https://kafka.apache.org/documentation/#security) in der Apache-Kafka-Dokumentation.


****  

| auth\$1type | security.protocol | sasl.mechanik | Cluster-Typ-Kompatibilität | 
| --- | --- | --- | --- | 
| SASL\$1SSL\$1PLAIN | SASL\$1SSL | PLAIN |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/connectors-kafka.html)  | 
| SASL\$1PLAINTEXT\$1PLAIN | SASL\$1PLAINTEXT | PLAIN |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/connectors-kafka.html)  | 
| SASL\$1SSL\$1SCRAM\$1SHA512 | SASL\$1SSL | SCRAM-SHA-512 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/connectors-kafka.html)  | 
| SASL\$1PLAINTEXT\$1SCRAM\$1SHA512 | SASL\$1PLAINTEXT | SCRAM-SHA-512 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/connectors-kafka.html)  | 
| SSL | SSL | – |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/connectors-kafka.html)  | 

#### SSL
<a name="connectors-kafka-setup-configuring-authentication-tls"></a>

Wenn der Cluster SSL-authentifiziert ist, müssen Sie die Vertrauensspeicher- und Schlüsselspeicherdateien generieren und sie in den Amazon-S3-Bucket hochladen. Sie müssen diese Amazon-S3-Referenz angeben, wenn Sie den Konnektor bereitstellen. Der Schlüsselspeicher, der Vertrauensspeicher und der SSL-Schlüssel werden in der AWS Secrets Manager gespeichert. Sie geben den AWS geheimen Schlüssel an, wenn Sie den Connector bereitstellen.

Informationen zum Erstellen eines Geheimnisses im Secrets Manager finden Sie unter [Erstellen eines AWS Secrets Manager -Geheimnisses](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html).

Um diesen Authentifizierungstyp zu verwenden, legen Sie die Umgebungsvariablen wie in der folgenden Tabelle gezeigt fest.


****  

| Parameter | Wert | 
| --- | --- | 
| auth\$1type | SSL | 
| certificates\$1s3\$1reference | Der Amazon-S3-Speicherort, der die Zertifikate enthält. | 
| secrets\$1manager\$1secret | Der Name Ihres AWS geheimen Schlüssels. | 

Nachdem Sie ein Geheimnis in Secrets Manager erstellt haben, können Sie es in der Secrets-Manager-Konsole anzeigen.

**So zeigen Sie Ihr Geheimnis in Secrets Manager an**

1. Öffnen Sie die Secrets Manager Manager-Konsole unter [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Wählen Sie im Navigationsbereich **Secrets** (Geheimnisse).

1. Wählen Sie auf der Seite **Secrets** (Geheimnisse) den Link zu Ihrem Geheimnis aus.

1. Wählen Sie auf der Detailseite für Ihr Geheimnis die Option **Retrieve secret value** (Geheimniswert abrufen).

   Das folgende Image zeigt ein Beispiel für ein Geheimnis mit drei Schlüssel/Wert-Paaren: `keystore_password`, `truststore_password` und `ssl_key_password`.  
![\[Abrufen eines SSL-Geheimnisses in Secrets Manager\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/images/connectors-kafka-setup-1.png)

Weitere Informationen zur Verwendung von SSL mit Kafka finden Sie unter [Verschlüsselung und Authentifizierung mit SSL](https://kafka.apache.org/documentation/#security_ssl) in der Apache-Kafka-Dokumentation.

#### SASL/SCRAM
<a name="connectors-kafka-setup-configuring-authentication-sasl-scram"></a>

Wenn Ihr Cluster SCRAM-Authentifizierung verwendet, geben Sie bei der Bereitstellung des Konnektor den Secrets-Manager-Schlüssel an, der dem Cluster zugeordnet ist. Die AWS -Anmeldeinformationen des Benutzers (geheimer Schlüssel und Zugriffsschlüssel) werden für die Authentifizierung mit dem Cluster verwendet.

Legen Sie die Umgebungsvariablen wie in der folgenden Tabelle angegeben fest.


****  

| Parameter | Wert | 
| --- | --- | 
| auth\$1type | SASL\$1SSL\$1SCRAM\$1SHA512 | 
| secrets\$1manager\$1secret | Der Name Ihres AWS geheimen Schlüssels. | 

Die folgende Abbildung zeigt ein Beispiel für ein Geheimnis in der Secrets Manager Manager-Konsole mit zwei key/value Paaren: eines für `username` und eines für`password`.

![\[Abrufen eines SCRAM-Geheimnisses in Secrets Manager\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/images/connectors-kafka-setup-2.png)


Weitere Informationen zur Verwendung SASL/SCRAM mit Kafka finden Sie unter [Authentifizierung mit SASL/SCRAM in der Apache](https://kafka.apache.org/documentation/#security_sasl_scram) Kafka-Dokumentation.

## Lizenzinformationen
<a name="connectors-kafka-license-information"></a>

[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](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-kafka/pom.xml) für diesen Connector, und Sie stimmen den Bedingungen der jeweiligen Drittanbieterlizenzen zu, die in der Datei LICENSE.txt auf .com bereitgestellt werden.](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-kafka/LICENSE.txt) GitHub

## Weitere Ressourcen
<a name="connectors-kafka-additional-resources"></a>

Weitere Informationen zu diesem Connector finden Sie auf [der entsprechenden Website](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-kafka) auf GitHub .com.

# Amazon-Athena-MSK-Konnektor
<a name="connectors-msk"></a>

Der Amazon-Athena-Konnektor für [Amazon MSK](https://aws.amazon.com/msk/) ermöglicht es Amazon Athena, SQL-Abfragen für Ihre Apache-Kafka-Themen auszuführen. Verwenden Sie diesen Konnektor, um [Apache-Kafka](https://kafka.apache.org/)-Themen als Tabellen und Nachrichten als Zeilen in Athena anzuzeigen. Weitere Informationen finden Sie unter [Analysieren von Echtzeit-Streaming-Daten in Amazon MSK mit Amazon Athena](https://aws.amazon.com/blogs/big-data/analyze-real-time-streaming-data-in-amazon-msk-with-amazon-athena/) im AWS Big Data-Blog.

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

## Voraussetzungen
<a name="connectors-msk-prerequisites"></a>

Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Für weitere Informationen siehe [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md) oder [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md).

## Einschränkungen
<a name="connectors-msk-limitations"></a>
+ Schreiboperationen wie DDL werden nicht unterstützt.
+ Alle relevanten Lambda-Grenzwerte. Weitere Informationen finden Sie unter [Lambda quotas (Lambda-Kontingente)](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) im *AWS Lambda -Entwicklerhandbuch.*
+ Datums- und Zeitstempeldatentypen in Filterbedingungen müssen in geeignete Datentypen umgewandelt werden.
+ Datums- und Zeitstempel-Datentypen werden für den CSV-Dateityp nicht unterstützt und als Varchar-Werte behandelt.
+ Die Zuordnung zu verschachtelten JSON-Feldern wird nicht unterstützt. Der Konnektor ordnet nur Felder der obersten Ebene zu.
+ Der Konnektor unterstützt keine komplexen Typen. Komplexe Typen werden als Zeichenfolgen interpretiert.
+ Verwenden Sie zum Extrahieren oder Arbeiten mit komplexen JSON-Werten die in Athena verfügbaren JSON-bezogenen Funktionen. Weitere Informationen finden Sie unter [Extrahieren Sie JSON-Daten aus Zeichenfolgen](extracting-data-from-JSON.md).
+ Der Konnektor unterstützt keinen Zugriff auf Kafka-Nachrichtenmetadaten.

## Bedingungen
<a name="connectors-msk-terms"></a>
+ **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.
+ **Kafka-Endpunkt** – Eine Textzeichenfolge, die eine Verbindung zu einer Kafka-Instance herstellt.

## Cluster-Kompatibilität
<a name="connectors-msk-cluster-compatibility"></a>

Der MSK-Konnektor kann mit den folgenden Cluster-Typen verwendet werden.
+ **Von MSK bereitgestellter Cluster** – Sie spezifizieren, überwachen und skalieren die Cluster-Kapazität manuell.
+ **MSK Serverless Cluster** — Bietet On-Demand-Kapazität, die automatisch mit der Skalierung der Anwendung skaliert wird. I/O 
+ **Eigenständiges Kafka** – Eine direkte Verbindung zu Kafka (authentifiziert oder unauthentifiziert).

## Unterstützte Authentifizierungsmethoden
<a name="connectors-msk-supported-authentication-methods"></a>

Der Konnektor unterstützt die folgenden Authentifizierungsmethoden.
+ [SASL/IAM](https://docs.aws.amazon.com/msk/latest/developerguide/iam-access-control.html) 
+ [SSL](https://docs.aws.amazon.com/msk/latest/developerguide/msk-authentication.html)
+ [SASL/SCRAM](https://docs.aws.amazon.com/msk/latest/developerguide/msk-password.html)
+ SASL/PLAIN
+ SASL/PLAINTEXT
+ NO\$1AUTH

  Weitere Informationen finden Sie unter [Konfigurieren der Authentifizierung für den Athena-MSK-Konnektor](#connectors-msk-setup-configuring-authentication).

## Unterstützte Eingabedatenformate
<a name="connectors-msk-supported-input-data-formats"></a>

Der Konnektor unterstützt die folgenden Eingabedatenformate.
+ JSON
+ CSV

## Parameters
<a name="connectors-msk-parameters"></a>

Verwenden Sie die Parameter in diesem Abschnitt, um den Athena-MSK-Konnektor zu konfigurieren.
+ **auth\$1type** – Gibt den Authentifizierungstyp des Clusters an. Der Konnektor unterstützt die folgenden Arten der Authentifizierung:
  + **NO\$1AUTH** – Stellen Sie eine direkte Verbindung zu Kafka ohne Authentifizierung her (z. B. zu einem Kafka-Cluster, der über eine EC2-Instance bereitgestellt wird, die keine Authentifizierung verwendet).
  + **SASL\$1SSL\$1PLAIN** — Diese Methode verwendet das `SASL_SSL` Sicherheitsprotokoll und den `PLAIN` SASL-Mechanismus.
  + **SASL\$1PLAINTEXT\$1PLAIN** — Diese Methode verwendet das `SASL_PLAINTEXT` Sicherheitsprotokoll und den `PLAIN` SASL-Mechanismus.
**Anmerkung**  
Die `SASL_SSL_PLAIN`- und `SASL_PLAINTEXT_PLAIN`-Authentifizierungstypen werden von Apache Kafka unterstützt, jedoch nicht von Amazon MSK.
  + **SASL\$1SSL\$1 AWS\$1MSK \$1IAM** — Mit der IAM-Zugriffskontrolle für Amazon MSK können Sie sowohl die Authentifizierung als auch die Autorisierung für Ihren MSK-Cluster durchführen. Die AWS Anmeldeinformationen Ihres Benutzers (geheimer Schlüssel und Zugriffsschlüssel) werden für die Verbindung mit dem Cluster verwendet. Weitere Informationen finden Sie unter [IAM-Zugriffskontrolle](https://docs.aws.amazon.com/msk/latest/developerguide/iam-access-control.html) im Entwicklerhandbuch für Amazon Managed Streaming for Apache Kafka.
  + **SASL\$1SSL\$1SCRAM\$1 SHA512** — Sie können diesen Authentifizierungstyp verwenden, um den Zugriff auf Ihre Amazon MSK-Cluster zu kontrollieren. Diese Methode speichert den Benutzernamen und das Passwort auf. AWS Secrets Manager Das Geheimnis muss dem Amazon-MSK-Cluster zugeordnet sein. Weitere Informationen finden Sie unter [Einrichten der SASL/SCRAM Authentifizierung für einen Amazon MSK-Cluster im Amazon](https://docs.aws.amazon.com/msk/latest/developerguide/msk-password.html#msk-password-tutorial) Managed Streaming for Apache Kafka Developer Guide.
  + **SSL** – Die SSL-Authentifizierung verwendet Schlüsselspeicher- und Vertrauensspeicherdateien, um eine Verbindung mit dem Amazon-MSK-Cluster herzustellen. Sie müssen die Trust-Store- und Key-Store-Dateien generieren, sie in einen Amazon-S3-Bucket hochladen und die Referenz auf Amazon S3 angeben, wenn Sie den Konnektor bereitstellen. Der Schlüsselspeicher, der Vertrauensspeicher und der SSL-Schlüssel werden in AWS Secrets Manager gespeichert. Ihr Client muss den AWS geheimen Schlüssel angeben, wenn der Connector bereitgestellt wird. Weitere Informationen finden Sie unter [Gegenseitige TLS-Authentifizierung](https://docs.aws.amazon.com/msk/latest/developerguide/msk-authentication.html) im Entwicklerhandbuch für Amazon Managed Streaming for Apache Kafka.

    Weitere Informationen finden Sie unter [Konfigurieren der Authentifizierung für den Athena-MSK-Konnektor](#connectors-msk-setup-configuring-authentication).
+ **certificates\$1s3\$1reference** – Der Amazon-S3-Speicherort, der die Zertifikate enthält (die Schlüsselspeicher- und Vertrauensspeicherdateien).
+ **disable\$1spill\$1encryption** – (Optional) Bei Einstellung auf `True`, wird die Spill-Verschlüsselung deaktiviert. Die Standardeinstellung ist `False`, sodass Daten, die an S3 übertrragen werden, mit AES-GCM verschlüsselt werden - entweder mit einem zufällig generierten Schlüssel oder mit KMS zum Generieren von Schlüsseln. Das Deaktivieren der Überlauf-Verschlüsselung kann die Leistung verbessern, insbesondere wenn Ihr Überlauf-Standort eine [serverseitige Verschlüsselung](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) verwendet.
+ **kafka\$1endpoint** – Die Endpunktdetails, die Kafka bereitgestellt werden sollen. Für einen Amazon MSK-Cluster stellen Sie beispielsweise eine [Bootstrap-URL](https://docs.aws.amazon.com/msk/latest/developerguide/msk-get-bootstrap-brokers.html) für den Cluster bereit.
+ **secrets\$1manager\$1secret** – Der Name des AWS -Geheimnisses, in dem die Anmeldeinformationen gespeichert sind. Dieser Parameter ist für die IAM-Authentifizierung nicht erforderlich.
+ **Überlauf-Parameter** – Lambda-Funktionen speichern vorübergehend („Überlauf“) Daten, die nicht in den Speicher von Amazon S3 passen. Alle Datenbank-Instances, auf die mit derselben Lambda-Funktion zugegriffen wird, werden an denselben Speicherort verschoben. Verwenden Sie die Parameter in der folgenden Tabelle, um den Überlauf-Standort anzugeben.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/connectors-msk.html)

## Datentypunterstützung
<a name="connectors-msk-data-type-support"></a>

Die folgende Tabelle zeigt die entsprechenden Datentypen, die für Kafka und Apache Arrow unterstützt werden.


****  

| Kafka | Arrow | 
| --- | --- | 
| CHAR | VARCHAR | 
| VARCHAR | VARCHAR | 
| TIMESTAMP (ZEITSTEMPEL) | MILLISEKUNDE | 
| DATE | TAG | 
| BOOLEAN | BOOL | 
| SMALLINT | SMALLINT | 
| INTEGER | INT | 
| BIGINT | BIGINT | 
| DECIMAL | FLOAT8 | 
| DOUBLE | FLOAT8 | 

## Partitionen und Splits
<a name="connectors-msk-partitions-and-splits"></a>

Kafka-Themen sind in Partitionen unterteilt. Jede Partition ist geordnet. Jede Nachricht in einer Partition hat eine inkrementelle ID, die *Offset* genannt wird. Jede Kafka-Partition wird für die parallele Verarbeitung in weitere Splits unterteilt. Daten sind für den in Kafka-Clustern konfigurierten Aufbewahrungszeitraum verfügbar.

## Best Practices
<a name="connectors-msk-best-practices"></a>

Verwenden Sie als bewährte Methode bei der Abfrage von Athena das Prädikat-Pushdown, wie in den folgenden Beispielen.

```
SELECT * 
FROM "msk_catalog_name"."glue_schema_registry_name"."glue_schema_name" 
WHERE integercol = 2147483647
```

```
SELECT * 
FROM "msk_catalog_name"."glue_schema_registry_name"."glue_schema_name" 
WHERE timestampcol >= TIMESTAMP '2018-03-25 07:30:58.878'
```

## Einrichten des MSK-Konnektors
<a name="connectors-msk-setup"></a>

Bevor Sie den Konnektor verwenden können, müssen Sie Ihren Amazon-MSK-Cluster einrichten, die [AWS Glue -Schema-Registry](https://docs.aws.amazon.com/glue/latest/dg/schema-registry.html) verwenden, um Ihr Schema zu definieren, und die Authentifizierung für den Connector konfigurieren.

**Anmerkung**  
Wenn Sie den Konnektor in einer VPC bereitstellen, um auf private Ressourcen zuzugreifen und auch eine Verbindung zu einem öffentlich zugänglichen Service wie Confluent herstellen möchten, müssen Sie den Konnektor einem privaten Subnetz zuordnen, das über ein NAT-Gateway verfügt. Weitere Informationen finden Sie unter [NAT-Gateways](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) im Amazon-VPC-Benutzerhandbuch.

Beachten Sie bei der Arbeit mit der AWS Glue Schema Registry die folgenden Punkte:
+ Stellen Sie sicher, dass der Text im Feld **Description** (Beschreibung) des AWS Glue -Schema-Registry die Zeichenfolge `{AthenaFederationMSK}` enthält. Diese Markierungszeichenfolge ist für AWS Glue Registries erforderlich, die Sie mit dem Amazon Athena MSK-Connector verwenden.
+ Verwenden Sie für Ihre Datenbanknamen und -tabellen nur Kleinbuchstaben, um eine optimale Leistung zu erzielen. Bei der Verwendung gemischter Groß- und Kleinschreibung führt der Konnektor eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung durch, die rechenintensiver ist.

**So richten Sie Ihre Amazon MSK-Umgebung und AWS Glue Schema Registry ein**

1. Richten Sie Ihre Amazon MSK-Umgebung ein. Informationen und Schritte finden Sie unter [Einrichten von Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/before-you-begin.html) und [Erste Schritte mit Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/getting-started.html) im Entwicklerhandbuch für Amazon Managed Streaming for Apache Kafka.

1. Laden Sie die Kafka-Themenbeschreibungsdatei (d. h. ihr Schema) im JSON-Format in die AWS Glue Schemaregistry hoch. Weitere Informationen finden Sie unter [Integration mit AWS Glue Schema Registry](https://docs.aws.amazon.com/glue/latest/dg/schema-registry-integrations.html) im AWS Glue Entwicklerhandbuch. Beispielschemata finden Sie im folgenden Abschnitt.

### Schemabeispiele für die AWS Glue Schema Registry
<a name="connectors-msk-setup-schema-examples"></a>

Verwenden Sie das Format der Beispiele in diesem Abschnitt, wenn Sie Ihr Schema in das [AWS Glue -Schema Registry](https://docs.aws.amazon.com/glue/latest/dg/schema-registry.html) hochladen.

#### Beispielschema für einen JSON-Typ
<a name="connectors-msk-setup-schema-examples-json"></a>

Im folgenden Beispiel wird das Schema, das in der AWS Glue Schemaregistry erstellt werden soll, `json` als Wert für angegeben `dataFormat` und `datatypejson` für verwendet`topicName`.

**Anmerkung**  
Der Wert für `topicName` sollte die gleiche Schreibweise wie der Themenname in Kafka verwenden. 

```
{
  "topicName": "datatypejson",
  "message": {
    "dataFormat": "json",
    "fields": [
      {
        "name": "intcol",
        "mapping": "intcol",
        "type": "INTEGER"
      },
      {
        "name": "varcharcol",
        "mapping": "varcharcol",
        "type": "VARCHAR"
      },
      {
        "name": "booleancol",
        "mapping": "booleancol",
        "type": "BOOLEAN"
      },
      {
        "name": "bigintcol",
        "mapping": "bigintcol",
        "type": "BIGINT"
      },
      {
        "name": "doublecol",
        "mapping": "doublecol",
        "type": "DOUBLE"
      },
      {
        "name": "smallintcol",
        "mapping": "smallintcol",
        "type": "SMALLINT"
      },
      {
        "name": "tinyintcol",
        "mapping": "tinyintcol",
        "type": "TINYINT"
      },
      {
        "name": "datecol",
        "mapping": "datecol",
        "type": "DATE",
        "formatHint": "yyyy-MM-dd"
      },
      {
        "name": "timestampcol",
        "mapping": "timestampcol",
        "type": "TIMESTAMP",
        "formatHint": "yyyy-MM-dd HH:mm:ss.SSS"
      }
    ]
  }
}
```

#### Beispielschema für einen CSV-Typ
<a name="connectors-msk-setup-schema-examples-csv"></a>

Im folgenden Beispiel wird das Schema, das in der AWS Glue Schemaregistry erstellt werden soll, `csv` als Wert für angegeben `dataFormat` und verwendet `datatypecsvbulk` für`topicName`. Der Wert für `topicName` sollte die gleiche Schreibweise wie der Themenname in Kafka verwenden.

```
{
  "topicName": "datatypecsvbulk",
  "message": {
    "dataFormat": "csv",
    "fields": [
      {
        "name": "intcol",
        "type": "INTEGER",
        "mapping": "0"
      },
      {
        "name": "varcharcol",
        "type": "VARCHAR",
        "mapping": "1"
      },
      {
        "name": "booleancol",
        "type": "BOOLEAN",
        "mapping": "2"
      },
      {
        "name": "bigintcol",
        "type": "BIGINT",
        "mapping": "3"
      },
      {
        "name": "doublecol",
        "type": "DOUBLE",
        "mapping": "4"
      },
      {
        "name": "smallintcol",
        "type": "SMALLINT",
        "mapping": "5"
      },
      {
        "name": "tinyintcol",
        "type": "TINYINT",
        "mapping": "6"
      },
      {
        "name": "floatcol",
        "type": "DOUBLE",
        "mapping": "7"
      }
    ]
  }
}
```

### Konfigurieren der Authentifizierung für den Athena-MSK-Konnektor
<a name="connectors-msk-setup-configuring-authentication"></a>

Sie können verschiedene Methoden verwenden, um sich bei Ihrem Amazon-MSK-Cluster zu authentifizieren, darunter IAM, SSL, SCRAM und eigenständiges Kafka.

Die folgende Tabelle zeigt die Authentifizierungstypen für den Konnektor sowie das jeweilige Sicherheitsprotokoll und den SASL-Mechanismus. Weitere Informationen finden Sie unter [Authentifizierung und Autorisierung für Apache Kafka APIs](https://docs.aws.amazon.com/msk/latest/developerguide/kafka_apis_iam.html) im Amazon Managed Streaming for Apache Kafka Developer Guide.


****  

| auth\$1type | security.protocol | sasl.mechanik | 
| --- | --- | --- | 
| SASL\$1SSL\$1PLAIN | SASL\$1SSL | PLAIN | 
| SASL\$1PLAINTEXT\$1PLAIN | SASL\$1PLAINTEXT | PLAIN | 
| SASL\$1SSL\$1AWS\$1MSK\$1IAM | SASL\$1SSL | AWS\$1MSK\$1IAM | 
| SASL\$1SSL\$1SCRAM\$1SHA512 | SASL\$1SSL | SCRAM-SHA-512 | 
| SSL | SSL | – | 

**Anmerkung**  
Die `SASL_SSL_PLAIN`- und `SASL_PLAINTEXT_PLAIN`-Authentifizierungstypen werden von Apache Kafka unterstützt, jedoch nicht von Amazon MSK.

#### SASL/IAM
<a name="connectors-msk-setup-configuring-authentication-sasl-iam"></a>

Wenn der Cluster die IAM-Authentifizierung verwendet, müssen Sie bei der Einrichtung des Clusters die IAM-Richtlinie für den Benutzer konfigurieren. Weitere Informationen finden Sie unter [IAM-Zugriffskontrolle](https://docs.aws.amazon.com/msk/latest/developerguide/IAM-access-control.html) im Entwicklerhandbuch für Amazon Managed Streaming for Apache Kafka.

Um diesen Authentifizierungstyp zu verwenden, legen Sie die `auth_type`-Lambda-Umgebungsvariable für den Konnektor auf `SASL_SSL_AWS_MSK_IAM` fest. 

#### SSL
<a name="connectors-msk-setup-configuring-authentication-tls"></a>

Wenn der Cluster SSL-authentifiziert ist, müssen Sie die Vertrauensspeicher- und Schlüsselspeicherdateien generieren und sie in den Amazon-S3-Bucket hochladen. Sie müssen diese Amazon-S3-Referenz angeben, wenn Sie den Konnektor bereitstellen. Der Schlüsselspeicher, der Vertrauensspeicher und der SSL-Schlüssel werden in der AWS Secrets Manager gespeichert. Sie geben den AWS geheimen Schlüssel an, wenn Sie den Connector bereitstellen.

Informationen zum Erstellen eines Geheimnisses im Secrets Manager finden Sie unter [Erstellen eines AWS Secrets Manager -Geheimnisses](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html).

Um diesen Authentifizierungstyp zu verwenden, legen Sie die Umgebungsvariablen wie in der folgenden Tabelle gezeigt fest.


****  

| Parameter | Wert | 
| --- | --- | 
| auth\$1type | SSL | 
| certificates\$1s3\$1reference | Der Amazon-S3-Speicherort, der die Zertifikate enthält. | 
| secrets\$1manager\$1secret | Der Name Ihres AWS geheimen Schlüssels. | 

Nachdem Sie ein Geheimnis in Secrets Manager erstellt haben, können Sie es in der Secrets-Manager-Konsole anzeigen.

**So zeigen Sie Ihr Geheimnis in Secrets Manager an**

1. Öffnen Sie die Secrets Manager Manager-Konsole unter [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Wählen Sie im Navigationsbereich **Secrets** (Geheimnisse).

1. Wählen Sie auf der Seite **Secrets** (Geheimnisse) den Link zu Ihrem Geheimnis aus.

1. Wählen Sie auf der Detailseite für Ihr Geheimnis die Option **Retrieve secret value** (Geheimniswert abrufen).

   Das folgende Image zeigt ein Beispiel für ein Geheimnis mit drei Schlüssel/Wert-Paaren: `keystore_password`, `truststore_password` und `ssl_key_password`.  
![\[Abrufen eines SSL-Geheimnisses in Secrets Manager\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/images/connectors-msk-setup-1.png)

#### SASL/SCRAM
<a name="connectors-msk-setup-configuring-authentication-sasl-scram"></a>

Wenn Ihr Cluster SCRAM-Authentifizierung verwendet, geben Sie bei der Bereitstellung des Konnektor den Secrets-Manager-Schlüssel an, der dem Cluster zugeordnet ist. Die AWS -Anmeldeinformationen des Benutzers (geheimer Schlüssel und Zugriffsschlüssel) werden für die Authentifizierung mit dem Cluster verwendet.

Legen Sie die Umgebungsvariablen wie in der folgenden Tabelle angegeben fest.


****  

| Parameter | Wert | 
| --- | --- | 
| auth\$1type | SASL\$1SSL\$1SCRAM\$1SHA512 | 
| secrets\$1manager\$1secret | Der Name Ihres AWS geheimen Schlüssels. | 

Die folgende Abbildung zeigt ein Beispiel für ein Geheimnis in der Secrets Manager Manager-Konsole mit zwei key/value Paaren: eines für `username` und eines für`password`.

![\[Abrufen eines SCRAM-Geheimnisses in Secrets Manager\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/images/connectors-msk-setup-2.png)


## Lizenzinformationen
<a name="connectors-msk-license-information"></a>

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](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-msk/pom.xml) für diesen Connector, und Sie stimmen den Bedingungen der jeweiligen Drittanbieterlizenzen zu, die in der Datei [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-msk/LICENSE.txt) auf GitHub .com bereitgestellt werden.

## Weitere Ressourcen
<a name="connectors-msk-additional-resources"></a>

Weitere Informationen zu diesem Connector finden Sie auf [der entsprechenden Website](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-msk) auf GitHub .com.

# Amazon Athena MySQL Konnektor
<a name="connectors-mysql"></a>

Der Amazon Athena Lambda-MySQL-Konnektor ermöglicht Amazon Athena den Zugriff auf MySQL-Datenbanken.

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
<a name="connectors-mysql-prerequisites"></a>
+ Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Für weitere Informationen siehe [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md) oder [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md).
+ Richten Sie eine VPC und eine Sicherheitsgruppe ein, bevor Sie diesen Konnektor verwenden. Weitere Informationen finden Sie unter [Erstellen Sie eine VPC für einen Datenquellenconnector oder AWS Glue eine Datenquellenverbindung](athena-connectors-vpc-creation.md).

## Einschränkungen
<a name="connectors-mysql-limitations"></a>
+ 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)](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) im *AWS Lambda -Entwicklerhandbuch.*
+ Da Athena Abfragen in Kleinbuchstaben umwandelt, müssen MySQL-Tabellennamen in Kleinbuchstaben geschrieben werden. Zum Beispiel werden Athena-Abfragen für eine Tabelle mit dem Namen `myTable` scheitern.
+ Wenn Sie Ihre MySQL-Verbindungen zu Glue Catalog und Lake Formation migrieren, werden nur die in Kleinbuchstaben geschriebenen Tabellen- und Spaltennamen erkannt. 

## Bedingungen
<a name="connectors-mysql-terms"></a>

Die folgenden Begriffe beziehen sich auf den MySQL-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 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.

## Parameters
<a name="connectors-mysql-parameters"></a>

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

**Anmerkung**  
Athena-Datenquellenconnectors, die am 3. Dezember 2024 und später erstellt wurden, verwenden AWS Glue Verbindungen.

### Glue Connections (empfohlen)
<a name="connectors-mysql-gc"></a>

Wir empfehlen, dass Sie einen MySQL-Connector mithilfe eines Glue-Connections-Objekts konfigurieren. 

Setzen Sie dazu die `glue_connection`-Umgebungsvariable des MySQL-Konnektors Lambda auf den Namen der zu verwendenden Glue-Connection.

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 MYSQL
```

**Lambda-Umgebungseigenschaften**

**glue\$1connection** – Gibt den Namen der Glue-Connection an, die dem Verbund-Connector zugeordnet ist. 

**Anmerkung**  
Alle Konnektoren, die Glue-Verbindungen verwenden, müssen diese AWS Secrets Manager zum Speichern von Anmeldeinformationen verwenden.
Der mit Glue-Connection erstellte MySQL-Connector unterstützt die Verwendung eines Multiplexing-Handlers nicht.
Der mit Glue-Connection erstellte MySQL-Connector unterstützt nur `ConnectionSchemaVersion` 2.

### Legacy-Connections
<a name="connectors-mysql-connection-legacy"></a>

Die unten aufgeführten Parameternamen und Definitionen beziehen sich auf Athena-Datenquellenkonnektoren, die ohne eine zugehörige Glue-Connection erstellt wurden. Verwenden Sie die folgenden Parameter nur, wenn Sie eine frühere Version eines Athena-Datenquellenkonnektors [manuell bereitstellen](connect-data-source-serverless-app-repo.md) oder wenn die `glue_connection`-Umgebungseigenschaft nicht angegeben ist.

#### Verbindungszeichenfolge
<a name="connectors-mysql-connection-string"></a>

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

```
mysql://${jdbc_connection_string}
```

**Anmerkung**  
Wenn Sie den Fehler java.sql erhalten. SQLException: Der Datumswert Null ist verboten, wenn Sie eine `SELECT` Abfrage in einer MySQL-Tabelle durchführen. Fügen Sie Ihrer Verbindungszeichenfolge den folgenden Parameter hinzu:  

```
zeroDateTimeBehavior=convertToNull
```
Weitere Informationen finden Sie unter [Fehler „Kein Datumswert verboten“ beim Versuch, aus der MySQL-Tabelle auf .com auszuwählen](https://github.com/awslabs/aws-athena-query-federation/issues/760). GitHub

#### Verwenden eines Multiplexing-Handlers
<a name="connectors-mysql-using-a-multiplexing-handler"></a>

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 | MySqlMuxCompositeHandler | 
| Metadaten-Handler | MySqlMuxMetadataHandler | 
| Record Handler | MySqlMuxRecordHandler | 

##### Multiplex-Handler-Parameter
<a name="connectors-mysql-multiplexing-handler-parameters"></a>


****  

| Parameter | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | 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 mymysqlcatalog ist, dann lautet der Name der Umgebungsvariablen mymysqlcatalog\$1connection\$1string. | 
| default | Erforderlich Die standardmäßige Verbindungszeichenfolge. Diese Zeichenfolge wird verwendet, wenn der Katalog verwendet wird. lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME \$1 | 

Die folgenden Beispieleigenschaften beziehen sich auf eine MySql MUX-Lambda-Funktion, die zwei Datenbankinstanzen unterstützt: `mysql1` (Standard) und. `mysql2`


****  

| Eigenschaft | Wert | 
| --- | --- | 
| default | mysql://jdbc:mysql://mysql2.host:3333/default?benutzer=Beispiel2&password=Beispiel2 | 
| mysql\$1catalog1\$1connection\$1string | mysql://jdbc:mysql://mysql1.host:3306/default?\$1\$1Test/RDS/MySql1\$1 | 
| mysql\$1catalog2\$1connection\$1string | mysql://jdbc:mysql://mysql2.host:3333/default?benutzer=Beispiel2&password=Beispiel2 | 

##### Bereitstellen von Anmeldeinformationen
<a name="connectors-mysql-providing-credentials"></a>

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 Ihrer hartcodierten Geheimnisse nach finden Sie im AWS Secrets Manager Benutzerhandbuch unter [Verschieben von hartcodierten AWS Secrets Manager Geheimnissen nach](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html).AWS Secrets Manager *
+ **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](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) oder einen [VPC-Endpunkt verfügen, um eine Verbindung zu Secrets](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html) Manager herzustellen.

  Sie können den Namen eines Geheimnisses in AWS Secrets Manager Ihre 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, eine Rotation der Anmeldeinformationen zu verwenden AWS Secrets Manager . 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/MySql1}`.

```
mysql://jdbc:mysql://mysql1.host:3306/default?...&${Test/RDS/MySql1}&...
```

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

```
mysql://jdbc:mysql://mysql1host:3306/default?...&user=sample2&password=sample2&...
```

Derzeit erkennt der MySQL-Konnektor die `user`- und `password`-JDBC-Eigenschaften.

#### Verwenden eines einzelnen Verbindungs-Handlers
<a name="connectors-mysql-using-a-single-connection-handler"></a>

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


****  

| Handler-Typ | Klasse | 
| --- | --- | 
| Composite Handler | MySqlCompositeHandler | 
| Metadaten-Handler | MySqlMetadataHandler | 
| Record Handler | MySqlRecordHandler | 

##### Parameter für Einzelverbindungs-Handler
<a name="connectors-mysql-single-connection-handler-parameters"></a>


****  

| Parameter | Description | 
| --- | --- | 
| 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 MySQL-Instance, die von einer Lambda-Funktion unterstützt wird.


****  

| Eigenschaft | Wert | 
| --- | --- | 
| default | mysql://mysql1.host:3306/default?secret=Test/RDS/MySql1 | 

#### Überlauf-Parameter
<a name="connectors-mysql-spill-parameters"></a>

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 | Description | 
| --- | --- | 
| spill\$1bucket | Erforderlich Überlauf-Bucket-Name. | 
| spill\$1prefix | Erforderlich Schlüssel-Prefix für den Überlauf-Bucket. | 
| spill\$1put\$1request\$1headers | (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. \$1"x-amz-server-side-encryption" : "AES256"\$1). Weitere mögliche Header finden Sie [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)in der Amazon Simple Storage Service API-Referenz. | 

## Datentypunterstützung
<a name="connectors-mysql-data-type-support"></a>

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


****  

| JDBC | Arrow | 
| --- | --- | 
| Boolesch | Bit | 
| Ganzzahl | Tiny | 
| Short | Smallint | 
| Ganzzahl | Int | 
| Long | Bigint | 
| float | Float4 | 
| Double | Float8 | 
| Date | DateDay | 
| Zeitstempel | DateMilli | 
| Zeichenfolge | Varchar | 
| Bytes | Varbinary | 
| BigDecimal | Dezimal | 
| ARRAY | Auflisten | 

## Partitionen und Splits
<a name="connectors-mysql-partitions-and-splits"></a>

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
<a name="connectors-mysql-performance"></a>

MySQL unterstützt native Partitionen. Der Athena-MySQL-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.

Der Athena-MySQL-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
<a name="connectors-mysql-performance-limit-clauses"></a>

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
<a name="connectors-mysql-performance-predicates"></a>

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

Die folgenden Athena-MySQL-Konnektor-Operatoren unterstützen Prädikat-Pushdown:
+ **Boolean: **UND, ODER, NICHT
+ **Gleichheit: **GLEICH, NICHT-GLEICH, WENIGER\$1ALS, WENIGER\$1ODER-GLEICH, GRÖSSER\$1ALS, GRÖSSER\$1ODER-GLEICH, IST\$1UNTERSCHIEDEN VON, NULL\$1WENN, IST\$1NULL
+ **Arithmetik: **ADDIEREN, SUBTRAHIEREN, MULTIPLIZIEREN, DIVIDIEREN, MODULIEREN, NEGIEREN
+ **Andere: WIE\$1MUSTER, IN**

### Beispiel für einen kombinierten Pushdown
<a name="connectors-mysql-performance-pushdown-example"></a>

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;
```

Einen Artikel über die Verwendung von Prädikat-Pushdown zur Verbesserung der Leistung bei Verbundabfragen, einschließlich MySQL, finden Sie unter [Verbessern von Verbundabfragen mit Prädikat-Pushdown in Amazon Athena](https://aws.amazon.com/blogs/big-data/improve-federated-queries-with-predicate-pushdown-in-amazon-athena/) im *AWS -Big-Data-Blog*.

## Pass-Through-Abfragen
<a name="connectors-mysql-passthrough-queries"></a>

Der MySQL-Connector unterstützt [Pass-Through-Abfragen.](federated-query-passthrough.md) Pass-Through-Abfragen verwenden eine Tabellenfunktion, um Ihre vollständige Abfrage zur Ausführung an die Datenquelle weiterzuleiten.

Um Pass-Through-Abfragen mit MySQL 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 MySQL 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
<a name="connectors-mysql-license-information"></a>

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](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-mysql/pom.xml) für diesen Connector und stimmen den Bedingungen der jeweiligen Drittanbieterlizenzen zu, die in der Datei [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-mysql/LICENSE.txt) auf GitHub .com enthalten sind.

## Weitere Ressourcen
<a name="connectors-mysql-additional-resources"></a>

Die neuesten Informationen zur JDBC-Treiberversion finden Sie in der Datei [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-mysql/pom.xml) für den MySQL-Connector auf GitHub .com.

Weitere Informationen zu diesem Connector finden Sie auf [ GitHubder entsprechenden Website](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-mysql) unter .com.

# Amazon Athena Neptune Konnektor
<a name="connectors-neptune"></a>

Amazon Neptune ist ein schneller, zuverlässiger, vollständig verwalteter Graph-Datenbankservice, mit dem es ganz einfach ist, Anwendungen zu erstellen und auszuführen, die mit stark verbundenen Datensätzen arbeiten. Die speziell entwickelte, leistungsstarke Diagrammdatenbank-Engine von Neptune speichert Milliarden von Beziehungen optimal und fragt Diagramme mit einer Latenz von nur Millisekunden ab. Weitere Informationen finden Sie unter [Neptune-Benutzerhandbuch](https://docs.aws.amazon.com/neptune/latest/userguide/intro.html).

Der Amazon Athena Neptune-Konnektor ermöglicht Athena die Kommunikation mit Ihrer Neptune-Graphdatenbank-Instance, sodass Ihre Neptune-Diagrammdaten über SQL-Abfragen zugänglich sind.

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

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

## Voraussetzungen
<a name="connectors-neptune-prerequisites"></a>

Die Verwendung des Neptune-Konnektors erfordert die folgenden drei Schritte.
+ Einen Neptune-Cluster einrichten
+ Einrichtung eines AWS Glue Data Catalog
+ Bereitstellen des Konnektors für Ihren AWS-Konto. Für weitere Informationen siehe [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md) oder [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md). Weitere Informationen zur Bereitstellung des Neptune-Connectors finden Sie unter [Bereitstellen des Amazon Athena Neptune](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-neptune/docs/neptune-connector-setup) Connectors auf .com. GitHub

## Einschränkungen
<a name="connectors-neptune-limitations"></a>

Derzeit weist der Neptune-Konnektor die folgende Einschränkung auf.
+ Das Projizieren von Spalten, einschließlich des Primärschlüssels (ID), ist nicht unterstützt. 

## Einen Neptune-Cluster einrichten
<a name="connectors-neptune-setting-up-a-neptune-cluster"></a>

Wenn Sie keinen vorhandenen Amazon Neptune-Cluster- und Eigenschaftsgraph-Datensatz haben, den Sie verwenden möchten, müssen Sie einen einrichten.

Stellen Sie sicher, dass Sie über einen Internet-Gateway und einen NAT-Gateway in der VPC verfügen, die Ihren Neptune-Cluster hostet. Die privaten Subnetze, die die Lambda-Funktion des Neptune-Konnektors verwendet, sollten über diesen NAT-Gateway eine Verbindung zum Internet haben. Die Lambda-Funktion des Neptune-Konnektors verwendet das NAT-Gateway für die Kommunikation mit. AWS Glue

Anweisungen zum Einrichten eines neuen Neptune-Clusters und zum Laden mit einem Beispieldatensatz finden Sie unter [Sample Neptune Cluster](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-neptune/docs/neptune-cluster-setup) Setup auf .com. GitHub

## Einrichtung eines AWS Glue Data Catalog
<a name="connectors-neptune-setting-up-an-aws-glue-data-catalog"></a>

Im Gegensatz zu herkömmlichen relationalen Datenspeichern verwenden Neptune Graph DB-Knoten und -Edges kein festgelegtes Schema. Jeder Eintrag kann unterschiedliche Felder und Datentypen haben. Da der Neptune-Konnektor jedoch Metadaten aus dem abruft AWS Glue Data Catalog, müssen Sie eine AWS Glue Datenbank erstellen, die Tabellen mit dem erforderlichen Schema enthält. Nachdem Sie die AWS Glue -Datenbank und -Tabellen erstellt haben, kann der Konnektor die Liste der Tabellen füllen, die für die Abfrage von Athena verfügbar sind.

### Aktivieren des Spaltenabgleichs ohne Berücksichtigung der Groß-/Kleinschreibung
<a name="connectors-neptune-glue-case-insensitive-column-matching"></a>

Um Spaltennamen aus Ihrer Neptune-Tabelle mit der richtigen Groß- und Kleinschreibung aufzulösen, auch wenn die Spaltennamen alle in Kleinbuchstaben geschrieben sind, können Sie den Neptune-Konnektor so konfigurieren AWS Glue, dass die Groß- und Kleinschreibung nicht berücksichtigt wird.

Um dieses Feature zu aktivieren, setzen Sie die Umgebungsvariable `enable_caseinsensitivematch` in der Lambda-Funktion des Neptune-Konnektors auf `true`. 

### Geben Sie den AWS Glue Glabel-Tabellenparameter für Tabellennamen in Groß-/Kleinschreibung an
<a name="connectors-neptune-glue-glabel-parameter-for-table-names"></a>

Da nur Tabellennamen in Kleinbuchstaben AWS Glue unterstützt werden, ist es wichtig, den `glabel` AWS Glue Tabellenparameter anzugeben, wenn Sie eine AWS Glue Tabelle für Neptune erstellen und Ihr Neptune-Tabellenname Groß- und Kleinschreibung enthält. 

Nehmen Sie den `glabel` Parameter in Ihre AWS Glue Tabellendefinition auf und setzen Sie seinen Wert auf Ihren Tabellennamen mit der ursprünglichen Groß-/Kleinschreibung. Dadurch wird sichergestellt, dass das richtige Gehäuse erhalten bleibt, wenn Sie mit Ihrem Neptune-Tisch AWS Glue interagieren. Im folgenden Beispiel wird der Wert von `glabel` auf den Tabellennamen `Airport` gesetzt.

```
glabel = Airport
```

![\[Einstellung der glabel AWS Glue Tabelleneigenschaft, um die Groß- und Kleinschreibung des Tabellennamens für eine Neptun-Tabelle beizubehalten\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/images/connectors-neptune-1.png)


Weitere Informationen zur Einrichtung eines für AWS Glue Data Catalog die Arbeit mit Neptune finden Sie unter [AWS Glue Katalog einrichten auf GitHub .com](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-neptune/docs/aws-glue-sample-scripts).

## Leistung
<a name="connectors-neptune-performance"></a>

Der Athena-Neptune-Konnektor führt einen Prädikat-Pushdown durch, um die von der Abfrage durchsuchten Daten zu reduzieren. Prädikate, die den Primärschlüssel verwenden, führen jedoch zu einem Abfragefehler. `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 Neptune-Konnektor ist aufgrund der Gleichzeitigkeit widerstandsfähig gegenüber Drosselung.

## Pass-Through-Abfragen
<a name="connectors-neptune-passthrough-queries"></a>

Der Neptune-Connector unterstützt [Pass-Through-Abfragen.](federated-query-passthrough.md) Sie können diese Feature verwenden, um Gremlin-Abfragen für Eigenschaftsdiagramme und SPARQL-Abfragen für RDF-Daten auszuführen.

Um Pass-Through-Abfragen mit Neptune zu verwenden, verwenden Sie die folgende Syntax:

```
SELECT * FROM TABLE(
        system.query(
            DATABASE => 'database_name',
            COLLECTION => 'collection_name',
            QUERY => 'query_string'
        ))
```

Das folgende Beispiel für Neptune-Passthrough-Abfragen filtert nach Flughäfen mit dem Code `ATL`. Die doppelten einfachen Anführungszeichen stehen für Escape.

```
SELECT * FROM TABLE(
        system.query(
            DATABASE => 'graph-database',
            COLLECTION => 'airport',
            QUERY => 'g.V().has(''airport'', ''code'', ''ATL'').valueMap()' 
        ))
```

## Weitere Ressourcen
<a name="connectors-neptune-additional-resources"></a>

Weitere Informationen zu diesem Connector finden Sie auf [der entsprechenden Website auf GitHub .com.](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-neptune)

# Amazon Athena Athena-Anschluss OpenSearch
<a name="connectors-opensearch"></a>

OpenSearch Dienst

Der Amazon OpenSearch Athena-Connector ermöglicht es Amazon Athena, mit Ihren OpenSearch Instances zu kommunizieren, sodass Sie SQL verwenden können, um Ihre OpenSearch Daten abzufragen.

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.

**Anmerkung**  
Aufgrund eines bekannten Problems kann der OpenSearch Connector nicht mit einer VPC verwendet werden.

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

## Voraussetzungen
<a name="connectors-opensearch-prerequisites"></a>
+ Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Für weitere Informationen siehe [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md) oder [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md).

## Bedingungen
<a name="connectors-opensearch-terms"></a>

Die folgenden Begriffe beziehen sich auf den Konnektor. OpenSearch 
+ **Domain** — Ein Name, den dieser Connector dem Endpunkt Ihrer OpenSearch Instance zuordnet. Die Domain wird auch als Datenbankname verwendet. Für OpenSearch Instances, die innerhalb des Amazon OpenSearch Service definiert sind, ist die Domain automatisch auffindbar. Für andere Instances müssen Sie eine Zuordnung zwischen dem Domainnamen und dem Endpunkt bereitstellen.
+ **Index** — Eine in Ihrer OpenSearch Instance definierte Datenbanktabelle.
+ **Mapping** – Wenn ein Index eine Datenbanktabelle ist, dann ist das Mapping sein Schema (d. h. die Definitionen seiner Felder und Attribute).

  Dieser Konnektor unterstützt sowohl das Abrufen von Metadaten aus der OpenSearch Instanz als auch von der AWS Glue Data Catalog. Wenn der Connector eine AWS Glue Datenbank und eine Tabelle findet, die Ihren OpenSearch Domänen- und Indexnamen entsprechen, versucht der Connector, sie für die Schemadefinition zu verwenden. Wir empfehlen Ihnen, Ihre AWS Glue Tabelle so zu erstellen, dass sie eine Obermenge aller Felder in Ihrem OpenSearch Index darstellt.
+ **Dokument** – Ein Datensatz innerhalb einer Datenbanktabelle.
+ **Datenstrom** – Zeitbasierte Daten, die aus mehreren Hintergrundindizes bestehen. Weitere Informationen finden Sie unter [Datenstreams](https://opensearch.org/docs/latest/dashboards/im-dashboards/datastream/) in der OpenSearch Dokumentation und [Erste Schritte mit Datenströmen](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/data-streams.html#data-streams-example) im *Amazon OpenSearch Service Developer Guide*.
**Anmerkung**  
Da Datenstrom-Indizes intern von Open Search erstellt und verwaltet werden, wählt der Konnektor die Schemazuordnung aus dem ersten verfügbaren Index aus. Aus diesem Grund empfehlen wir dringend, eine AWS Glue Tabelle als zusätzliche Metadatenquelle einzurichten. Weitere Informationen finden Sie unter [Einrichten von Datenbanken und Tabellen in AWS Glue](#connectors-opensearch-setting-up-databases-and-tables-in-aws-glue). 

## Parameters
<a name="connectors-opensearch-parameters"></a>

Verwenden Sie die Parameter in diesem Abschnitt, um den OpenSearch 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](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) abweichen. Verwenden Sie ab dem 3. Dezember 2024 die folgenden Parameter nur, wenn Sie eine frühere Version eines Athena-Datenquellen-Connectors [manuell bereitstellen](connect-data-source-serverless-app-repo.md).

### Glue Connections (empfohlen)
<a name="opensearch-gc"></a>

Es wird empfohlen, einen OpenSearch Konnektor mithilfe eines Glue-Verbindungsobjekts zu konfigurieren. Setzen Sie dazu die `glue_connection` Umgebungsvariable des OpenSearch Connectors Lambda auf den Namen der zu verwendenden Glue-Verbindung.

**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 OPENSEARCH
```

**Lambda-Umgebungseigenschaften**
+  **glue\$1connection** – Gibt den Namen der Glue-Connection an, die dem Verbund-Connector zugeordnet ist. 

**Anmerkung**  
Alle Konnektoren, die Glue-Verbindungen verwenden, müssen diese AWS Secrets Manager zum Speichern von Anmeldeinformationen verwenden.
Der mit Glue-Verbindungen erstellte OpenSearch Konnektor unterstützt die Verwendung eines Multiplexing-Handlers nicht.
Der mit Glue-Verbindungen erstellte OpenSearch Konnektor unterstützt nur `ConnectionSchemaVersion` 2.

### Legacy-Connections
<a name="opensearch-legacy"></a>
+ **spill\$1bucket** – Gibt den Amazon S3-Bucket für Daten an, die die Lambda-Funktionsgrenzen überschreiten.
+ **spill\$1prefix** – (Optional) Ist standardmäßig ein Unterordner im angegebenen `spill_bucket` genannt `athena-federation-spill`. Wir empfehlen Ihnen, einen Amazon-S3-[Speicher-Lebenszyklus](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) an dieser Stelle zu konfigurieren, um die Überlaufe zu löschen, die älter als eine festgelegte Anzahl von Tagen oder Stunden sind.
+ **spill\$1put\$1request\$1headers** – (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 [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)in der *Amazon Simple Storage Service API-Referenz.*
+ **kms\$1key\$1id** – (Optional) Standardmäßig werden alle Daten, die an Amazon S3 gesendet 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, wie`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, können Sie eine ID einer Verschlüsselung angeben.
+ **disable\$1spill\$1encryption** – (Optional) Bei Einstellung auf `True`, wird die Spill-Verschlüsselung deaktiviert. Die Standardeinstellung ist `False`, sodass Daten, die an S3 übertrragen werden, mit AES-GCM verschlüsselt werden - entweder mit einem zufällig generierten Schlüssel oder mit KMS zum Generieren von Schlüsseln. Das Deaktivieren der Überlauf-Verschlüsselung kann die Leistung verbessern, insbesondere wenn Ihr Überlauf-Standort eine [serverseitige Verschlüsselung](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) verwendet.
+ **disable\$1glue** — (Optional) Falls vorhanden und auf true gesetzt, versucht der Connector nicht, zusätzliche Metadaten von abzurufen. AWS Glue
+ **query\$1timeout\$1cluster** – Der Timeout-Zeitraum in Sekunden für Cluster-Integritätsabfragen, die bei der Generierung parallel Scans verwendet werden.
+ **query\$1timeout\$1search** – Die Zeitüberschreitungsdauer in Sekunden für Suchanfragen, die beim Abrufen von Dokumenten aus einem Index verwendet werden.
+ **auto\$1discover\$1endpoint** – Boolesch. Der Standardwert ist `true`. Wenn Sie den OpenSearch Amazon-Service verwenden und diesen Parameter auf true setzen, kann der Connector Ihre Domains und Endpunkte automatisch erkennen, indem er die entsprechenden Describe- oder List-API-Operationen für den OpenSearch Service aufruft. Für jede andere Art von OpenSearch Instance (z. B. selbst gehostet) müssen Sie die zugehörigen Domain-Endpunkte in der Variablen angeben. `domain_mapping` Falls`auto_discover_endpoint=true`, verwendet der Connector AWS Anmeldeinformationen, um sich beim Service zu authentifizieren. OpenSearch Andernfalls ruft der Connector die Anmeldeinformationen für Benutzername und Passwort AWS Secrets Manager über die `domain_mapping` Variable ab.
+ **domain\$1mapping** – Wird nur verwendet, wenn `auto_discover_endpoint` auf „false“ (falsch) gesetzt ist und die Zuordnung zwischen Domainnamen und den zugehörigen Endpunkten definiert. Die `domain_mapping` Variable kann mehrere OpenSearch Endpunkte im folgenden Format aufnehmen:

  ```
  domain1=endpoint1,domain2=endpoint2,domain3=endpoint3,...       
  ```

  Für die Authentifizierung an einem OpenSearch Endpunkt unterstützt der Konnektor Ersatzzeichenfolgen, die in dem Format `${SecretName}` eingegeben werden, aus dem der Benutzername und das Passwort abgerufen wurden. AWS Secrets Manager Das Geheimnis sollte im folgenden JSON-Format gespeichert werden:

  ```
  { "username": "your_username", "password": "your_password" }
  ```

  Der Connector analysiert diese JSON-Struktur automatisch, um die Anmeldeinformationen abzurufen.
**Wichtig**  
Als bewährte Sicherheitsmethode sollten Sie keine fest kodierten Anmeldeinformationen in Ihren Umgebungsvariablen oder Verbindungszeichenfolgen verwenden. *Informationen zum Verschieben von hartcodierten Geheimnissen nach finden Sie im AWS Secrets Manager Benutzerhandbuch unter [Verschieben von hartcodierten AWS Secrets Manager Geheimnissen nach](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html).AWS Secrets Manager *

  Im folgenden Beispiel wird das `opensearch-creds`-Secret verwendet.

  ```
  movies=https://${opensearch-creds}:search-movies-ne...qu---us-east-1---es.amazonaws.com     
  ```

  Bei der Ausführung wird `${opensearch-creds}` wie im folgenden Beispiel als Benutzername und -Passwort wiedergegeben.

  ```
  movies=https://myusername@mypassword:search-movies-ne...qu---us-east-1---es.amazonaws.com
  ```

  Im `domain_mapping`-Parameter kann jedes Domain-Endpunkt-Paar ein anderes Secret verwenden. Das Geheimnis selbst muss im Format *user\$1name* @ angegeben werden. *password* Obwohl das Passwort eingebettete `@` Zeichen enthalten kann, `@` dient das erste Zeichen als Trennzeichen von*user\$1name*.

  Es ist auch wichtig zu beachten, dass das Komma (,) und das Gleichheitszeichen (=) von diesem Konnektor als Trennzeichen für die Domain-Endpunkt-Paare verwendet werden. Aus diesem Grund sollten Sie sie nicht innerhalb des gespeicherten Secrets verwenden.

## Einrichten von Datenbanken und Tabellen in AWS Glue
<a name="connectors-opensearch-setting-up-databases-and-tables-in-aws-glue"></a>

Der Konnektor ruft mithilfe von AWS Glue oder OpenSearch Metadateninformationen ab. Sie können eine AWS Glue Tabelle als zusätzliche Quelle für Metadatendefinitionen einrichten. Um diese Funktion zu aktivieren, definieren Sie eine AWS Glue Datenbank und eine Tabelle, die der Domäne und dem Index der Quelle entsprechen, die Sie ergänzen möchten. Der Connector kann auch die in der OpenSearch Instanz gespeicherten Metadatendefinitionen nutzen, indem er die Zuordnung für den angegebenen Index abruft.

### Definieren von Metadaten für Arrays in OpenSearch
<a name="connectors-opensearch-defining-metadata-for-arrays-in-opensearch"></a>

OpenSearch hat keinen dedizierten Array-Datentyp. Jedes Feld kann null oder mehr Werte enthalten, sofern sie vom gleichen Datentyp sind. Wenn Sie OpenSearch als Quelle für die Metadatendefinition verwenden möchten, müssen Sie eine `_meta` Eigenschaft für alle mit Athena verwendeten Indizes für die Felder definieren, die als Liste oder Array betrachtet werden sollen. Wenn Sie diesen Schritt nicht ausführen, geben Abfragen nur das erste Element im Listenfeld aus. Wenn Sie die `_meta`-Eigenschaft angeben, sollten Feldnamen sollten vollständig für verschachtelte JSON-Strukturen qualifiziert sein (z. B. `address.street`, wobei `street` ein verschachteltes Feld innerhalb einer `address`-Struktur ist).

Im folgenden Beispiel werden `actor`- und `genre`-Listen in der `movies`-Tabelle definiert.

```
PUT movies/_mapping 
{ 
  "_meta": { 
    "actor": "list", 
    "genre": "list" 
  } 
}
```

### Datentypen
<a name="connectors-opensearch-data-types"></a>

Der OpenSearch Konnektor kann Metadatendefinitionen entweder aus der Instanz AWS Glue oder aus der OpenSearch Instanz extrahieren. Der Konnektor verwendet das Mapping in der folgenden Tabelle, um die Definitionen in Apache Arrow-Datentypen zu konvertieren, einschließlich der im folgenden Abschnitt aufgeführten Punkte.


****  

| OpenSearch | Apache Arrow | AWS Glue | 
| --- | --- | --- | 
| Text, Schlüsselwort, binär | VARCHAR | string | 
| long | BIGINT | bigint | 
| scaled\$1float | BIGINT | SCALED\$1FLOAT (...) | 
| Ganzzahl | INT | int | 
| short | SMALLINT | smallint | 
|  Byte | TINYINT | tinyint | 
| double | FLOAT8 | double | 
| float, half\$1float | FLOAT4 | float | 
| Boolean | BIT | boolesch | 
| Datum, date\$1nanos | DATUMMILLI | Zeitstempel | 
| JSON-Struktur | STRUCT | STRUCT | 
| \$1meta (Weitere Informationen finden Sie im Abschnitt [Definieren von Metadaten für Arrays in OpenSearch](#connectors-opensearch-defining-metadata-for-arrays-in-opensearch).) | LIST | ARRAY | 

#### Hinweise zu Datentypen
<a name="connectors-opensearch-data-type-considerations-and-limitations"></a>
+ Derzeit unterstützt der Konnektor nur die in der vorherigen Tabelle aufgeführten AWS Glue Datentypen OpenSearch und.
+ Ein `scaled_float` ist eine Gleitkommazahl, die mit einem festen doppelten Skalierungsfaktor skaliert und als `BIGINT` in Apache Arrow dargestellt wird. Beispielsweise wird 0,756 mit einem Skalierungsfaktor von 100 auf 76 gerundet.
+ Um einen `scaled_float` in zu definieren AWS Glue, müssen Sie den `array` Spaltentyp auswählen und das Feld im Format SCALED\$1FLOAT () deklarieren. *scaling\$1factor*

  Das folgende Beispiele sind gültig:

  ```
  SCALED_FLOAT(10.51) 
  SCALED_FLOAT(100) 
  SCALED_FLOAT(100.0)
  ```

  Das folgende Beispiele sind nicht gültig:

  ```
  SCALED_FLOAT(10.) 
  SCALED_FLOAT(.5)
  ```
+ Bei der Konvertierung von `date_nanos` zu `DATEMILLI` werden Nanosekunden auf die nächste Millisekunde gerundet. Zulässige Werte für `date` und `date_nanos` beinhalten, sind aber nicht beschränkt auf, die folgenden Formate:

  ```
  "2020-05-18T10:15:30.123456789" 
  "2020-05-15T06:50:01.123Z" 
  "2020-05-15T06:49:30.123-05:00" 
  1589525370001 (epoch milliseconds)
  ```
+ An OpenSearch `binary` ist eine Zeichenkettendarstellung eines Binärwerts, der mit a codiert ist `Base64` und in ein umgewandelt wird. `VARCHAR`

## Ausführen von SQL-Abfragen
<a name="connectors-opensearch-running-sql-queries"></a>

Im Folgenden finden Sie Beispiele für DDL-Abfragen, die Sie mit diesem Konnektor verwenden können. In den Beispielen *function\$1name* entspricht dies dem Namen Ihrer Lambda-Funktion, *domain* ist der Name der Domain, die Sie abfragen möchten, und *index* ist der Name Ihres Indexes.

```
SHOW DATABASES in `lambda:function_name`
```

```
SHOW TABLES in `lambda:function_name`.domain
```

```
DESCRIBE `lambda:function_name`.domain.index
```

## Leistung
<a name="connectors-opensearch-performance"></a>

Der OpenSearch Athena-Anschluss unterstützt Shard-basierte parallel Scans. Der Connector verwendet die von der OpenSearch Instanz abgerufenen Cluster-Integritätsinformationen, um mehrere Anfragen für eine Dokumentensuchabfrage zu generieren. Die Anforderungen werden für jeden Shard aufgeteilt und gleichzeitig ausgeführt.

Der Konnektor gibt auch Prädikate als Teil seiner Dokumentensuchabfragen aus. Die folgende Beispielabfrage und das folgende Prädikat zeigen, wie der Konnektor Prädikat-Pushdown verwendet.

**Query**

```
SELECT * FROM "lambda:elasticsearch".movies.movies 
WHERE year >= 1955 AND year <= 1962 OR year = 1996
```

**Prädikat**

```
(_exists_:year) AND year:([1955 TO 1962] OR 1996)
```

## Pass-Through-Abfragen
<a name="connectors-opensearch-passthrough-queries"></a>

Der OpenSearch Connector unterstützt [Passthrough-Abfragen](federated-query-passthrough.md) und verwendet die Query-DSL-Sprache. [Weitere Informationen zur Abfrage mit Query DSL finden Sie unter Query DSL in der Elasticsearch-Dokumentation oder unter [Query DSL](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html) in der Dokumentation.](https://opensearch.org/docs/latest/query-dsl/) OpenSearch 

Verwenden Sie die folgende Syntax, um Passthrough-Abfragen mit dem OpenSearch Konnektor zu verwenden:

```
SELECT * FROM TABLE(
        system.query(
            schema => 'schema_name',
            index => 'index_name',
            query => "{query_string}"
        ))
```

Das folgende OpenSearch Beispiel für eine Passthrough-Abfrage filtert nach Mitarbeitern mit aktivem Beschäftigungsstatus im `employee` Index des `default` Schemas.

```
SELECT * FROM TABLE(
        system.query(
            schema => 'default',
            index => 'employee',
            query => "{ ''bool'':{''filter'':{''term'':{''status'': ''active''}}}}"
        ))
```

## Weitere Ressourcen
<a name="connectors-opensearch-additional-resources"></a>
+ Einen Artikel zur Verwendung des Amazon OpenSearch Athena-Connectors zur Abfrage von Daten in Amazon OpenSearch Service und Amazon S3 in einer einzigen [Abfrage finden Sie unter Daten in Amazon OpenSearch Service mit SQL von Amazon Athena](https://aws.amazon.com/blogs/big-data/query-data-in-amazon-opensearch-service-using-sql-from-amazon-athena/) abfragen im *AWS Big Data-Blog*.
+ Weitere Informationen zu diesem Connector finden Sie auf [der entsprechenden Website auf GitHub .com.](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-elasticsearch)

# Amazon Athena Oracle Konnektor
<a name="connectors-oracle"></a>

Der Amazon-Athena-Konnektor für Oracle ermöglicht es Amazon Athena, SQL-Abfragen für Daten auszuführen, die in Oracle gespeichert sind, die On-Premises oder auf Amazon EC2 oder Amazon RDS ausgeführt werden. Sie können den Konnektor auch verwenden, um Daten auf [Oracle Exadata](https://www.oracle.com/engineered-systems/exadata/) abzufragen.

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
<a name="connectors-oracle-prerequisites"></a>
+ Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Für weitere Informationen siehe [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md) oder [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md).

## Einschränkungen
<a name="connectors-oracle-limitations"></a>
+ 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)](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) im *AWS Lambda -Entwicklerhandbuch.*
+ Es werden nur Oracle-Datenbanken der Version 12.1.0.2 unterstützt.
+ Wenn der Oracle-Konnektor keine Glue-Connection verwendet, werden die Datenbank-, Tabellen- und Spaltennamen vom Konnektor in Großbuchstaben umgewandelt. 

  Wenn der Oracle-Konnektor eine Glue-Connection verwendet, werden die Datenbank-, Tabellen- und Spaltennamen vom Konnektor nicht standardmäßig in Großbuchstaben geschrieben. Um dieses Verhalten bei der Groß- und Kleinschreibung zu ändern, ändern Sie Lambda nach Umgebungsvariable `casing_mode` auf `upper` oder `lower`, nach Bedarf.

   Ein Oracle-Konnektor, der eine Glue-Connection verwendet, unterstützt die Verwendung eines Multiplexing-Handlers nicht.
+ Wenn Sie Oracle `NUMBER` ohne definierte Genauigkeit und Dezimalstellen verwenden, behandelt Athena dies als `BIGINT`. Um die erforderlichen Dezimalstellen in Athena zu erhalten, geben Sie `default_scale=<number of decimal places>` in Ihren Lambda-Umgebungsvariablen an.

## Bedingungen
<a name="connectors-oracle-terms"></a>

Die folgenden Begriffe beziehen sich auf den Oracle-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 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.

## Parameters
<a name="connectors-oracle-parameters"></a>

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

### Glue Connections (empfohlen)
<a name="oracle-gc"></a>

Wir empfehlen, dass Sie einen Oracle-Connector mithilfe eines Glue-Connections-Objekts konfigurieren. Setzen Sie dazu die `glue_connection`-Umgebungsvariable des Oracle-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 ORACLE
```

**Lambda-Umgebungseigenschaften**
+ **glue\$1connection** – Gibt den Namen der Glue-Connection an, die dem Verbund-Connector zugeordnet ist. 
+ **is\$1fips\$1enabled** – (Optional) Auf true gesetzt, wenn der FIPS-Modus aktiviert ist. Der Standardwert lautet „false“.
+ **casing\$1mode** – (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:
  + **lower** – Kleinschreibung aller angegebenen Schema- und Tabellennamen. Dies ist die Standardeinstellung für Konnektoren, denen eine Glue-Connection zugeordnet ist.
  + **upper** – Großschreibung aller angegebenen Schema- und Tabellennamen. Dies ist die Standardeinstellung für Konnektoren, denen keine Glue-Connection zugeordnet ist.
  + **case\$1insensitive\$1search** – Führt Suchen nach Schema- und Tabellennamen in Oracle, ohne Berücksichtigung der Groß- und Kleinschreibung durch. Verwenden Sie diesen Wert, wenn Ihre Abfrage Schema- oder Tabellennamen enthält, die nicht mit der Standard-Groß- und Kleinschreibung für Ihren Connector übereinstimmen.

**Anmerkung**  
Alle Konnektoren, die Glue-Verbindungen verwenden, müssen diese AWS Secrets Manager zum Speichern von Anmeldeinformationen verwenden.
Der mit Glue-Connection erstellte Oracle-Connector unterstützt die Verwendung eines Multiplexing-Handlers nicht.
Der mit Glue-Connection erstellte Oracle-Connector unterstützt nur `ConnectionSchemaVersion` 2.

### Legacy-Connections
<a name="oracle-legacy"></a>

**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-Datenquellenkonnektoren, die ohne eine zugehörige Glue-Connection erstellt wurden. Verwenden Sie die folgenden Parameter nur, wenn Sie eine frühere Version eines Athena-Datenquellenkonnektors [manuell bereitstellen](connect-data-source-serverless-app-repo.md) oder wenn die `glue_connection`-Umgebungseigenschaft nicht angegeben ist.

**Lambda-Umgebungseigenschaften**
+ **default** – Die JDBC-Verbindungszeichenfolge, die für die Verbindung mit der Oracle-Datenbankinstance verwendet werden soll. Beispiel: `oracle://${jdbc_connection_string}`
+ **catalog\$1connection\$1string** – Wird vom Multiplexing-Handler verwendet (wird nicht unterstützt, wenn eine Glue-Connection verwendet wird). 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 myoraclecatalog ist, dann lautet der Name der Umgebungsvariablen myoraclecatalog\$1connection\$1string.
+ **spill\$1bucket** – Gibt den Amazon S3-Bucket für Daten an, die die Lambda-Funktionsgrenzen überschreiten.
+ **spill\$1prefix** – (Optional) Ist standardmäßig ein Unterordner im angegebenen `spill_bucket` genannt `athena-federation-spill`. Wir empfehlen Ihnen, einen Amazon-S3-[Speicher-Lebenszyklus](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) an dieser Stelle zu konfigurieren, um die Überlaufe zu löschen, die älter als eine festgelegte Anzahl von Tagen oder Stunden sind.
+ **spill\$1put\$1request\$1headers** – (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 [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)in der *Amazon Simple Storage Service API-Referenz.*
+ **kms\$1key\$1id** – (Optional) Standardmäßig werden alle Daten, die an Amazon S3 gesendet 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, wie`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, können Sie eine ID einer Verschlüsselung angeben.
+ **disable\$1spill\$1encryption** – (Optional) Bei Einstellung auf `True`, wird die Spill-Verschlüsselung deaktiviert. Die Standardeinstellung ist `False`, sodass Daten, die an S3 übertrragen werden, mit AES-GCM verschlüsselt werden - entweder mit einem zufällig generierten Schlüssel oder mit KMS zum Generieren von Schlüsseln. Das Deaktivieren der Überlauf-Verschlüsselung kann die Leistung verbessern, insbesondere wenn Ihr Überlauf-Standort eine [serverseitige Verschlüsselung](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) verwendet.
+ **is\$1fips\$1enabled** – (Optional) Auf true gesetzt, wenn der FIPS-Modus aktiviert ist. Der Standardwert lautet „false“.
+ **casing\$1mode** – (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:
  + **lower** – Kleinschreibung aller angegebenen Schema- und Tabellennamen. Dies ist die Standardeinstellung für Konnektoren, denen eine Glue-Connection zugeordnet ist.
  + **upper** – Großschreibung aller angegebenen Schema- und Tabellennamen. Dies ist die Standardeinstellung für Konnektoren, denen keine Glue-Connection zugeordnet ist.
  + **case\$1insensitive\$1search** – Führt Suchen nach Schema- und Tabellennamen in Oracle, ohne Berücksichtigung der Groß- und Kleinschreibung durch. Verwenden Sie diesen Wert, wenn Ihre Abfrage Schema- oder Tabellennamen enthält, die nicht mit der Standard-Groß- und Kleinschreibung für Ihren Connector übereinstimmen.

#### Verbindungszeichenfolge
<a name="connectors-oracle-connection-string"></a>

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

```
oracle://${jdbc_connection_string}
```

**Anmerkung**  
Wenn Ihr Passwort Sonderzeichen enthält (z. B. `some.password`), schließen Sie Ihr Passwort in doppelte Anführungszeichen ein, wenn Sie es an die Verbindungszeichenfolge übergeben (z. B. `"some.password"`). Wenn Sie dies nicht tun, kann dies zu einem Fehler Angabe einer ungültigen Oracle-URL führen.

#### Verwenden eines einzelnen Verbindungs-Handlers
<a name="connectors-oracle-using-a-single-connection-handler"></a>

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


****  

| Handler-Typ | Klasse | 
| --- | --- | 
| Composite Handler | OracleCompositeHandler | 
| Metadaten-Handler | OracleMetadataHandler | 
| Record Handler | OracleRecordHandler | 

##### Parameter für Einzelverbindungs-Handler
<a name="connectors-oracle-single-connection-handler-parameters"></a>


****  

| Parameter | Description | 
| --- | --- | 
| default | Erforderlich Die standardmäßige Verbindungszeichenfolge. | 
| IsFIPSEnabled | Optional. Wird auf true eingestellt, wenn der FIPS-Modus aktiviert ist. Der Standardwert ist false.  | 

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

Der Konnektor unterstützt SSL-basierte Verbindungen zu Amazon RDS-Instances. Die Unterstützung ist auf das Transport Layer Security (TLS)-Protokoll und auf die Authentifizierung des Servers durch den Client beschränkt. Gegenseitige Authentifizierung wird in Amazon RDS nicht unterstützt. Die zweite Zeile in der folgenden Tabelle zeigt die Syntax für die Verwendung von SSL.

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


****  

| Eigenschaft | Wert | 
| --- | --- | 
| default | oracle://jdbc:oracle:thin:\$1\$1Test/RDS/Oracle\$1@//hostname:port/servicename | 
|  | oracle://jdbc:oracle:thin:\$1\$1Test/RDS/Oracle\$1@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS) (HOST=<HOST\$1NAME>)(PORT=))(CONNECT\$1DATA=(SID=))(SECURITY=(SSL\$1SERVER\$1CERT\$1DN=))) | 

#### Bereitstellen von Anmeldeinformationen
<a name="connectors-oracle-providing-credentials"></a>

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 Ihrer hartcodierten Geheimnisse nach AWS Secrets Manager finden Sie unter [Verschieben von hartcodierten Geheimnissen nach AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) im AWS Secrets Manager Benutzerhandbuch.*
+ **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](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) oder einen [VPC-Endpunkt verfügen, um eine Verbindung zu Secrets](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html) Manager herzustellen.

  Sie können den Namen eines Geheimnisses in AWS Secrets Manager Ihre 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, eine Rotation der Anmeldeinformationen zu verwenden AWS Secrets Manager . Wenn Ihre Datenbank Amazon RDS nicht verwendet, speichern Sie die Anmeldeinformationen als JSON im folgenden Format:

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Anmerkung**  
Wenn Ihr Passwort Sonderzeichen enthält (z. B. `some.password`), setzen Sie Ihr Passwort in doppelte Anführungszeichen, wenn Sie es in Secrets Manager speichern (z. B. `"some.password"`). Wenn Sie dies nicht tun, kann dies zu einem Fehler Angabe einer ungültigen Oracle-URL führen.

**Beispiel einer Verbindungszeichenfolge mit einem geheimen Namen**  
Die folgende Zeichenfolge hat den geheimen Namen `${Test/RDS/Oracle}`.

```
oracle://jdbc:oracle:thin:${Test/RDS/Oracle}@//hostname:port/servicename 
```

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

```
oracle://jdbc:oracle:thin:username/password@//hostname:port/servicename
```

Derzeit erkennt der Oracle-Konnektor die `UID`- und `PWD`-JDBC-Eigenschaften.

#### Verwenden eines Multiplexing-Handlers
<a name="connectors-oracle-using-a-multiplexing-handler"></a>

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 | OracleMuxCompositeHandler | 
| Metadaten-Handler | OracleMuxMetadataHandler | 
| Record Handler | OracleMuxRecordHandler | 

##### Multiplex-Handler-Parameter
<a name="connectors-oracle-multiplexing-handler-parameters"></a>


****  

| Parameter | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | 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 myoraclecatalog ist, dann lautet der Name der Umgebungsvariablen myoraclecatalog\$1connection\$1string. | 
| default | Erforderlich Die standardmäßige Verbindungszeichenfolge. Diese Zeichenfolge wird verwendet, wenn der Katalog verwendet wird lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Die folgenden Beispieleigenschaften gelten für eine Oracle MUX Lambda-Funktion, die zwei Datenbankinstanzen unterstützt: `oracle1` (die Standardeinstellung) und `oracle2`.


****  

| Eigenschaft | Wert | 
| --- | --- | 
| default | oracle://jdbc:oracle:thin:\$1\$1Test/RDS/Oracle1\$1@//oracle1.hostname:port/servicename | 
| oracle\$1catalog1\$1connection\$1string | oracle://jdbc:oracle:thin:\$1\$1Test/RDS/Oracle1\$1@//oracle1.hostname:port/servicename | 
| oracle\$1catalog2\$1connection\$1string | oracle://jdbc:oracle:thin:\$1\$1Test/RDS/Oracle2\$1@//oracle2.hostname:port/servicename | 

## Datentypunterstützung
<a name="connectors-oracle-data-type-support"></a>

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


****  

| JDBC | Oracle | Arrow | 
| --- | --- | --- | 
| Boolesch | boolesch | Bit | 
| Ganzzahl | – | Tiny | 
| Short | smallint | Smallint | 
| Ganzzahl | Ganzzahl | Int | 
| Long | bigint | Bigint | 
| float | float4 | Float4 | 
| Double | float8 | Float8 | 
| Date | date | DateDay | 
| Zeitstempel | Zeitstempel | DateMilli | 
| Zeichenfolge | Text | Varchar | 
| Bytes | bytes | Varbinary | 
| BigDecimal | numeric(p,s) | Dezimal | 
| ARRAY | N.z. (siehe Hinweis) | Auflisten | 

## Partitionen und Splits
<a name="connectors-oracle-partitions-and-splits"></a>

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
<a name="connectors-oracle-performance"></a>

Oracle unterstützt native Partitionen. Der Athena-Oracle-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 Oracle-Konnektor ist aufgrund der Gleichzeitigkeit widerstandsfähig gegenüber Drosselung. Allerdings sind die Abfragelaufzeiten in der Regel lang.

Der Athena-Oracle-Konnektor 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
<a name="connectors-oracle-performance-predicates"></a>

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

Die folgenden Athena-Oracle-Konnektor-Operatoren unterstützen Prädikat-Pushdown:
+ **Boolean: **UND, ODER, NICHT
+ **Gleichheit: **GLEICH, NICHT GLEICH, WENIGER\$1ALS, WENIGER\$1ODER\$1GLEICH, GRÖSSER\$1ALS, GRÖSSER\$1ODER\$1GLEICH, IST\$1NULL
+ **Arithmetik: **ADDIEREN, SUBTRAHIEREN, MULTIPLIZIEREN, DIVIDIEREN, NEGIEREN
+ **Andere: WIE\$1MUSTER, IN**

### Beispiel für einen kombinierten Pushdown
<a name="connectors-oracle-performance-pushdown-example"></a>

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%');
```

## Pass-Through-Abfragen
<a name="connectors-oracle-passthrough-queries"></a>

Der Oracle-Connector unterstützt [Pass-Through-Abfragen.](federated-query-passthrough.md) Pass-Through-Abfragen verwenden eine Tabellenfunktion, um Ihre vollständige Abfrage zur Ausführung an die Datenquelle weiterzuleiten.

Um Pass-Through-Abfragen mit Oracle 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 Oracle weiter. Die Abfrage wählt alle Spalten in der `customer`-Tabelle aus.

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

## Lizenzinformationen
<a name="connectors-oracle-license-information"></a>

Durch die Verwendung dieses Connectors erkennen Sie die Einbeziehung von Komponenten von Drittanbietern an. Eine Liste dieser Komponenten finden Sie in der Datei [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-oracle/pom.xml) für diesen Connector, und Sie stimmen den Bedingungen der jeweiligen Drittanbieterlizenzen zu, die in der Datei [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-oracle/LICENSE.txt) auf GitHub .com enthalten sind.

## Weitere Ressourcen
<a name="connectors-oracle-additional-resources"></a>

Die neuesten Informationen zur JDBC-Treiberversion finden Sie in der Datei [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-oracle/pom.xml) für den Oracle-Connector auf GitHub .com.

Weitere Informationen zu diesem Connector finden Sie auf [ GitHubder entsprechenden Website](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-oracle) unter .com.

# Amazon Athena PostgreSQL Konnektor
<a name="connectors-postgresql"></a>

Der Amazon-Athena-PostgreSQL-Konnektor ermöglicht Athena den Zugriff auf Ihre PostgreSQL-Datenbanken.

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
<a name="connectors-postgres-prerequisites"></a>
+ Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Für weitere Informationen siehe [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md) oder [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md).

## Einschränkungen
<a name="connectors-postgresql-limitations"></a>
+ 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)](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) im *AWS Lambda -Entwicklerhandbuch.*
+ Wie PostgreSQL behandelt Athena abschließende Leerzeichen in `CHAR`-PostgreSQL-Typen aus Längen- und Vergleichsgründen als semantisch unbedeutend. Beachten Sie, dass dies nur für `CHAR`-Typen gilt, nicht aber für `VARCHAR`-Typen. Athena ignoriert abschließende Leerzeichen für den `CHAR` Typ, behandelt sie jedoch als signifikant für den `VARCHAR`-Typ.
+ Wenn Sie den [Citext](https://www.postgresql.org/docs/current/citext.html)-Datentyp für Zeichenfolge ohne Berücksichtigung der Groß- und Kleinschreibung verwenden, verwendet PostgreSQL einen Datenvergleich ohne Berücksichtigung der Groß- und Kleinschreibung, der sich von Athena unterscheidet. Dieser Unterschied führt zu einer Datendiskrepanz bei SQL–`JOIN`-Vorgängen. Um dieses Problem zu umgehen, verwenden Sie die Passthrough-Abfragefeature des PostgreSQL-Konnektors. Weitere Informationen finden Sie im Abschnitt [Pass-Through-Abfragen](#connectors-postgres-passthrough-queries) weiter unten in diesem Dokument. 

## Bedingungen
<a name="connectors-postgresql-terms"></a>

Die folgenden Begriffe beziehen sich auf den PostgreSQL-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 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.

## Parameters
<a name="connectors-postgresql-parameters"></a>

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

**Anmerkung**  
Athena-Datenquellenconnectors, die am 3. Dezember 2024 und später erstellt wurden, verwenden AWS Glue Verbindungen.

### Glue Connections (empfohlen)
<a name="connectors-postgresql-gc"></a>

Wir empfehlen, dass Sie einen PostgreSQL-Connector mithilfe eines Glue-Connections-Objekts konfigurieren. 

Setzen Sie dazu die `glue_connection`-Umgebungsvariable des PostgreSQL-Konnektors Lambda auf den Namen der zu verwendenden Glue-Connection.

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 POSTGRESQL
```

**Lambda-Umgebungseigenschaften**

**glue\$1connection** – Gibt den Namen der Glue-Connection an, die dem Verbund-Connector zugeordnet ist. 

**Anmerkung**  
Alle Konnektoren, die Glue-Verbindungen verwenden, müssen diese AWS Secrets Manager zum Speichern von Anmeldeinformationen verwenden.
Der mit Glue-Connection erstellte PostgreSQL-Connector unterstützt die Verwendung eines Multiplexing-Handlers nicht.
Der mit Glue-Connection erstellte PostgreSQL-Connector unterstützt nur `ConnectionSchemaVersion` 2.

### Legacy-Connections
<a name="connectors-postgresql-connection-legacy"></a>

Die unten aufgeführten Parameternamen und Definitionen beziehen sich auf Athena-Datenquellenkonnektoren, die ohne eine zugehörige Glue-Connection erstellt wurden. Verwenden Sie die folgenden Parameter nur, wenn Sie eine frühere Version eines Athena-Datenquellenkonnektors [manuell bereitstellen](connect-data-source-serverless-app-repo.md) oder wenn die `glue_connection`-Umgebungseigenschaft nicht angegeben ist.

#### Verbindungszeichenfolge
<a name="connectors-postgresql-connection-string"></a>

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

```
postgres://${jdbc_connection_string}
```

#### Verwenden eines Multiplexing-Handlers
<a name="connectors-postgresql-using-a-multiplexing-handler"></a>

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 | PostGreSqlMuxCompositeHandler | 
| Metadaten-Handler | PostGreSqlMuxMetadataHandler | 
| Record Handler | PostGreSqlMuxRecordHandler | 

##### Multiplex-Handler-Parameter
<a name="connectors-postgresql-multiplexing-handler-parameters"></a>


****  

| Parameter | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | 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 mypostgrescatalog ist, dann lautet der Name der Umgebungsvariablen mypostgrescatalog\$1connection\$1string. | 
| default | Erforderlich Die standardmäßige Verbindungszeichenfolge. Diese Zeichenfolge wird verwendet, wenn der Katalog verwendet wird lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Die folgenden Beispieleigenschaften beziehen sich auf eine PostGreSql MUX-Lambda-Funktion, die zwei Datenbankinstanzen unterstützt: `postgres1` (Standard) und. `postgres2`


****  

| Eigenschaft | Wert | 
| --- | --- | 
| default | postgres://jdbc:postgresql://postgres1.host:5432/default?\$1\$1Test/RDS/PostGres1\$1 | 
| postgres\$1catalog1\$1connection\$1string | postgres://jdbc:postgresql://postgres1.host:5432/default?\$1\$1Test/RDS/PostGres1\$1 | 
| postgres\$1catalog2\$1connection\$1string | postgres://jdbc:postgresql://postgres2.host:5432/default?user=sample&password=sample | 

##### Bereitstellen von Anmeldeinformationen
<a name="connectors-postgresql-providing-credentials"></a>

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 Ihrer hartcodierten Geheimnisse nach finden Sie im AWS Secrets Manager Benutzerhandbuch unter [Verschieben von hartcodierten AWS Secrets Manager Geheimnissen nach](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html).AWS Secrets Manager *
+ **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](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) oder einen [VPC-Endpunkt verfügen, um eine Verbindung zu Secrets](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html) Manager herzustellen.

  Sie können den Namen eines Geheimnisses in AWS Secrets Manager Ihre 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, eine Rotation der Anmeldeinformationen zu verwenden AWS Secrets Manager . 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/PostGres1}`.

```
postgres://jdbc:postgresql://postgres1.host:5432/default?...&${Test/RDS/PostGres1}&...
```

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

```
postgres://jdbc:postgresql://postgres1.host:5432/default?...&user=sample2&password=sample2&...
```

Derzeit erkennt der PostgreSQL-Konnektor die `user`- und `password`-JDBC-Eigenschaften.

##### Aktivieren von SSL
<a name="connectors-postgresql-ssl"></a>

Um SSL in Ihrer PostgreSQL-Verbindung zu unterstützen, fügen Sie Folgendes an Ihre Verbindungszeichenfolge an:

```
&sslmode=verify-ca&sslfactory=org.postgresql.ssl.DefaultJavaSSLFactory
```

**Beispiel**  
Die folgende Beispiel-Verbindungszeichenfolge verwendet kein SSL.

```
postgres://jdbc:postgresql://example-asdf-aurora-postgres-endpoint:5432/asdf?user=someuser&password=somepassword
```

Um SSL zu aktivieren, ändern Sie die Zeichenfolge wie folgt.

```
postgres://jdbc:postgresql://example-asdf-aurora-postgres-endpoint:5432/asdf?user=someuser&password=somepassword&sslmode=verify-ca&sslfactory=org.postgresql.ssl.DefaultJavaSSLFactory
```

#### Verwenden eines einzelnen Verbindungs-Handlers
<a name="connectors-postgresql-using-a-single-connection-handler"></a>

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


****  

| Handler-Typ | Klasse | 
| --- | --- | 
| Composite Handler | PostGreSqlCompositeHandler | 
| Metadaten-Handler | PostGreSqlMetadataHandler | 
| Record Handler | PostGreSqlRecordHandler | 

##### Parameter für Einzelverbindungs-Handler
<a name="connectors-postgresql-single-connection-handler-parameters"></a>


****  

| Parameter | Description | 
| --- | --- | 
| 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 PostgreSQL-Instance, die von einer Lambda-Funktion unterstützt wird.


****  

| Eigenschaft | Wert | 
| --- | --- | 
| default | postgres://jdbc:postgresql://postgres1.host:5432/default?secret=\$1\$1Test/RDS/PostgreSQL1\$1 | 

#### Überlauf-Parameter
<a name="connectors-postgresql-spill-parameters"></a>

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 | Description | 
| --- | --- | 
| spill\$1bucket | Erforderlich Überlauf-Bucket-Name. | 
| spill\$1prefix | Erforderlich Schlüssel-Prefix für den Überlauf-Bucket. | 
| spill\$1put\$1request\$1headers | (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. \$1"x-amz-server-side-encryption" : "AES256"\$1). Weitere mögliche Header finden Sie [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)in der Amazon Simple Storage Service API-Referenz. | 

## Datentypunterstützung
<a name="connectors-postgresql-data-type-support"></a>

Die folgende Tabelle zeigt die entsprechenden Datentypen für JDBC, PostGre SQL und Arrow.


****  

| JDBC | PostGreSQL | Arrow | 
| --- | --- | --- | 
| Boolesch | Boolesch | Bit | 
| Ganzzahl | – | Tiny | 
| Short | smallint | Smallint | 
| Ganzzahl | Ganzzahl | Int | 
| Long | bigint | Bigint | 
| float | float4 | Float4 | 
| Double | float8 | Float8 | 
| Date | date | DateDay | 
| Zeitstempel | Zeitstempel | DateMilli | 
| Zeichenfolge | Text | Varchar | 
| Bytes | bytes | Varbinary | 
| BigDecimal | numeric(p,s) | Dezimal | 
| ARRAY | N.z. (siehe Hinweis) | Auflisten | 

**Anmerkung**  
Der `ARRAY`-Type wird für den PostgreSQL-Konnektor mit den folgenden Einschränkungen unterstützt: Multidimensionale Arrays (`<data_type>[][]` oder verschachtelte Arrays) werden nicht unterstützt. Spalten mit nicht unterstützten `ARRAY`-Datentypen werden in ein Array von Zeichenfolgen-Elementen konvertiert (`array<varchar>`).

## Partitionen und Splits
<a name="connectors-postgresql-partitions-and-splits"></a>

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
<a name="connectors-postgresql-performance"></a>

PostgreSQL unterstützt native Partitionen. Der Athena-PostgreSQL-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.

Der Athena-PostgreSQL-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. Die Auswahl einer Teilmenge von Spalten führt jedoch manchmal zu einer längeren Laufzeit der Abfrageausführung.

### LIMIT-Klauseln
<a name="connectors-postgres-performance-limit-clauses"></a>

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
<a name="connectors-postgres-performance-predicates"></a>

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

Die folgenden Athena-PostgreSQL-Konnektor-Operatoren unterstützen Prädikat-Pushdown:
+ **Boolean: **UND, ODER, NICHT
+ **Gleichheit: **GLEICH, NICHT-GLEICH, WENIGER\$1ALS, WENIGER\$1ODER-GLEICH, GRÖSSER\$1ALS, GRÖSSER\$1ODER-GLEICH, IST\$1UNTERSCHIEDEN VON, NULL\$1WENN, IST\$1NULL
+ **Arithmetik: **ADDIEREN, SUBTRAHIEREN, MULTIPLIZIEREN, DIVIDIEREN, MODULIEREN, NEGIEREN
+ **Andere: WIE\$1MUSTER, IN**

### Beispiel für einen kombinierten Pushdown
<a name="connectors-postgres-performance-pushdown-example"></a>

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
<a name="connectors-postgres-passthrough-queries"></a>

Der PostgreSQL-Connector unterstützt [Pass-Through-Abfragen.](federated-query-passthrough.md) Pass-Through-Abfragen verwenden eine Tabellenfunktion, um Ihre vollständige Abfrage zur Ausführung an die Datenquelle weiterzuleiten.

Um Pass-Through-Abfragen mit PostgreSQL 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 PostgreSQL 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'
        ))
```

## Weitere Ressourcen
<a name="connectors-postgresql-additional-resources"></a>

Die neuesten Informationen zur JDBC-Treiberversion finden Sie in der Datei [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-postgresql/pom.xml) für den PostgreSQL-Connector auf .com. GitHub

Weitere Informationen zu diesem Connector finden Sie auf [der entsprechenden Website unter .com](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-postgresql). GitHub

# Amazon Athena Redis OSS-Konnektor
<a name="connectors-redis"></a>

Der Amazon Athena Redis-OSS-Konnektor ermöglicht Amazon Athena die Kommunikation mit Ihren Redis-OSS-Instances, sodass Sie Ihre Redis-OSS-Daten mit SQL abfragen können. Sie können die verwenden AWS Glue Data Catalog , um Ihre Redis OSS-Schlüssel-Wert-Paare virtuellen Tabellen zuzuordnen.

Im Gegensatz zu herkömmlichen relationalen Datenspeichern gibt es bei Redis OSS das Konzept von Tabelle oder Spalte nicht. Stattdessen bietet Redis OSS Schlüsselwert-Zugriffsmuster an, bei denen der Schlüssel im Wesentlichen ein `string` und der Wert ein `string`, `z-set`, oder `hmap` ist.

Sie können das verwenden, AWS Glue Data Catalog um ein Schema zu erstellen und virtuelle Tabellen zu konfigurieren. Spezielle Tabelleneigenschaften teilen dem Athena Redis OSS-Konnektor mit, wie Sie Ihre Redis-OSS-Schlüssel und -Werte einer Tabelle zuordnen. Weitere Informationen finden Sie unter [Einrichten von Datenbanken und Tabellen in AWS Glue](#connectors-redis-setting-up-databases-and-tables-in-glue) an späterer Stelle in diesem Dokument.

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

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

Der Amazon Athena Redis OSS-Konnektor unterstützt Amazon MemoryDB und Amazon ElastiCache (Redis OSS).

## Voraussetzungen
<a name="connectors-redis-prerequisites"></a>
+ Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Für weitere Informationen siehe [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md) oder [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md).
+ Richten Sie eine VPC und eine Sicherheitsgruppe ein, bevor Sie diesen Konnektor verwenden. Weitere Informationen finden Sie unter [Erstellen Sie eine VPC für einen Datenquellenconnector oder AWS Glue eine Datenquellenverbindung](athena-connectors-vpc-creation.md).

## Parameters
<a name="connectors-redis-parameters"></a>

Verwenden Sie die Parameter in diesem Abschnitt, um den Redis-Konnektor zu konfigurieren.
+ **spill\$1bucket** – Gibt den Amazon S3-Bucket für Daten an, die die Lambda-Funktionsgrenzen überschreiten.
+ **spill\$1prefix** – (Optional) Ist standardmäßig ein Unterordner im angegebenen `spill_bucket` genannt `athena-federation-spill`. Wir empfehlen Ihnen, einen Amazon-S3-[Speicher-Lebenszyklus](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) an dieser Stelle zu konfigurieren, um die Überlaufe zu löschen, die älter als eine festgelegte Anzahl von Tagen oder Stunden sind.
+ **spill\$1put\$1request\$1headers** – (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 [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)in der *Amazon Simple Storage Service API-Referenz.*
+ **kms\$1key\$1id** – (Optional) Standardmäßig werden alle Daten, die an Amazon S3 gesendet 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, wie`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, können Sie eine ID einer Verschlüsselung angeben.
+ **disable\$1spill\$1encryption** – (Optional) Bei Einstellung auf `True`, wird die Spill-Verschlüsselung deaktiviert. Die Standardeinstellung ist `False`, sodass Daten, die an S3 übertrragen werden, mit AES-GCM verschlüsselt werden - entweder mit einem zufällig generierten Schlüssel oder mit KMS zum Generieren von Schlüsseln. Das Deaktivieren der Überlauf-Verschlüsselung kann die Leistung verbessern, insbesondere wenn Ihr Überlauf-Standort eine [serverseitige Verschlüsselung](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) verwendet.
+ **glue\$1catalog** – (Optional) Verwenden Sie diese Option, um einen [kontoübergreifenden AWS Glue -Katalog](data-sources-glue-cross-account.md) anzugeben. Standardmäßig versucht der Connector, Metadaten von seinem eigenen AWS Glue Konto abzurufen.

## Einrichten von Datenbanken und Tabellen in AWS Glue
<a name="connectors-redis-setting-up-databases-and-tables-in-glue"></a>

Um eine AWS Glue Tabelle für die Verwendung mit Redis OSS zu aktivieren, können Sie die folgenden Tabelleneigenschaften für die Tabelle festlegen: `redis-endpoint``redis-value-type`, und entweder `redis-keys-zset` oder`redis-key-prefix`.

Darüber hinaus muss jede AWS Glue Datenbank, die Redis-OSS-Tabellen enthält, eine Eigenschaft `redis-db-flag` in der URI-Eigenschaft der Datenbank haben. Um die `redis-db-flag` URI-Eigenschaft festzulegen, verwenden Sie die AWS Glue Konsole, um die Datenbank zu bearbeiten.

Die folgende Liste enthält Beschreibungen der Tabelleneigenschaften.
+ **redis-endpoint** — (Erforderlich) Der *hostname* `:` *port* `:` *password* des Redis OSS-Servers, der Daten für diese Tabelle enthält (z. B.`athena-federation-demo.cache.amazonaws.com:6379`). Alternativ können Sie den Endpunkt oder einen Teil des Endpunkts speichern, AWS Secrets Manager indem Sie \$1 \$1*Secret\$1Name*\$1 als Tabelleneigenschaftswert verwenden.

**Anmerkung**  
Um die Athena Federated Query-Funktion verwenden zu können AWS Secrets Manager, muss die mit Ihrer Lambda-Funktion verbundene VPC über [Internetzugang](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) oder einen [VPC-Endpunkt verfügen, um eine Verbindung zu Secrets](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html) Manager herzustellen.
+ **redis-keys-zset**[— (Erforderlich, falls nicht `redis-key-prefix` verwendet) Eine durch Kommas getrennte Liste von Schlüsseln, deren Wert ein Satz ist (z. B.).](https://redis.com/ebook/part-2-core-concepts/chapter-3-commands-in-redis/3-5-sorted-sets/) `active-orders,pending-orders` Jeder der Werte in der Gruppe wird als Schlüssel behandelt, der Teil der Tabelle ist. Entweder muss die `redis-keys-zset`-Eigenschaft oder die `redis-key-prefix`-Eigenschaft festgelegt sein.
+ **redis-key-prefix**— (Erforderlich, falls `redis-keys-zset` nicht verwendet) Eine durch Kommas getrennte Liste von Schlüsselpräfixen, um in der Tabelle nach Werten zu suchen (zum Beispiel). `accounts-*,acct-` Entweder muss die `redis-key-prefix`-Eigenschaft oder die `redis-keys-zset`-Eigenschaft festgelegt sein.
+ **redis-value-type**— (Erforderlich) Definiert, wie die Werte für die durch `redis-key-prefix` oder definierten Schlüssel `redis-keys-zset` Ihrer Tabelle zugeordnet werden. Ein Literal wird einer einzelnen Spalte zugeordnet. Ein zset wird auch einer einzelnen Spalte zugeordnet, aber jeder Schlüssel kann viele Zeilen speichern. Ein Hash ermöglicht, dass jeder Schlüssel eine Zeile mit mehreren Spalten ist (z. B. ein Hash, Literal oder zset).
+ **redis-ssl-flag**— (Optional) Wenn`True`, wird eine Redis-Verbindung erstellt, die SSL/TLS verwendet. Der Standardwert ist `False`.
+ **redis-cluster-flag**— (Optional) Wann`True`, aktiviert die Unterstützung für geclusterte Redis-Instanzen. Der Standardwert ist `False`.
+ **redis-db-number**— (Optional) Gilt nur für eigenständige, nicht geclusterte Instances.) Legen Sie diese Zahl (z. B. 1, 2 oder 3) fest, um sie aus einer nicht standardmäßigen Redis-Datenbank zu lesen. Die Standardeinstellung ist Redis logische Datenbank 0. Diese Zahl bezieht sich nicht auf eine Datenbank in Athena oder AWS Glue, sondern auf eine logische Redis-Datenbank. Weitere Informationen finden Sie unter [SELECT Index](https://redis.io/commands/select) in der MySQL-Dokumentation.

## Datentypen
<a name="connectors-redis-data-types"></a>

Der Redis-OSS-Konnektor unterstützt die folgenden Datentypen. Redis-OSS-Streams werden nicht unterstützt.
+ [Zeichenfolge](https://redis.com/ebook/part-1-getting-started/chapter-1-getting-to-know-redis/1-2-what-redis-data-structures-look-like/1-2-1-strings-in-redis/)
+ [Hash](https://redis.com/ebook/part-1-getting-started/chapter-1-getting-to-know-redis/1-2-what-redis-data-structures-look-like/1-2-4-hashes-in-redis/)
+ Sortierter Satz () [ZSet](https://redis.com/ebook/part-2-core-concepts/chapter-3-commands-in-redis/3-5-sorted-sets/)

Alle Redis-OSS-Werte werden abgerufen als `string`-Datentyp. Anschließend werden sie in einen der folgenden Apache Arrow-Datentypen konvertiert, basierend darauf, wie Ihre Tabellen in AWS Glue Data Catalog definiert sind.


****  

| AWS Glue Datentyp | Apache Arrow-Datentyp | 
| --- | --- | 
| int | INT | 
| Zeichenfolge | VARCHAR | 
| bigint | BIGINT | 
| double | FLOAT8 | 
| float | FLOAT4 | 
| smallint | SMALLINT | 
| tinyint | TINYINT | 
| boolesch | BIT | 
| Binary | VARBINARY | 

## Erforderliche Berechtigungen
<a name="connectors-redis-required-permissions"></a>

Ausführliche Informationen zu den für diesen Konnektor erforderlichen IAM-Richtlinien finden Sie im `Policies`-Abschnitt der [athena-redis.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-redis/athena-redis.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 Redis-Konnektor 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 Redis-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 Redis-Instances kommunizieren kann.

## Leistung
<a name="connectors-redis-performance"></a>

Der Redis-OSS-Konnektor von Athena versucht, Abfragen für Ihre Redis-OSS-Instance entsprechend dem von Ihnen definierten Tabellentyp zu parallelisieren (z. B. zset- oder Präfix-Schlüssel).

Der Athena-Redis-Konnektor führt einen Prädikat-Pushdown durch, um die von der Abfrage durchsuchten Daten zu reduzieren. Abfragen, die ein Prädikat für den Primärschlüssel enthalten, schlagen jedoch mit einer Zeitüberschreitung fehl. `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 Redis-Konnektor ist aufgrund der Gleichzeitigkeit widerstandsfähig gegenüber Drosselung.

## Pass-Through-Abfragen
<a name="connectors-redis-passthrough-queries"></a>

Der Redis-Connector unterstützt [Pass-Through-Abfragen.](federated-query-passthrough.md) Sie können diese Feature verwenden, um Abfragen, die Lua-Skript verwenden, in Redis-Datenbanken auszuführen. 

Um Pass-Through-Abfragen mit Redis zu verwenden, verwenden Sie die folgende Syntax:

```
SELECT * FROM TABLE(
        system.script(
            script => 'return redis.[call|pcall](query_script)',
            keys => '[key_pattern]',
            argv => '[script_arguments]'
))
```

Im folgenden Beispiel wird ein Lua-Skript ausgeführt, um den Wert bei Schlüssel `l:a` abzurufen.

```
SELECT * FROM TABLE(
        system.script(
            script => 'return redis.call("GET", KEYS[1])',
            keys => '[l:a]',
            argv => '[]'
))
```

## Lizenzinformationen
<a name="connectors-redis-license-information"></a>

Das Amazon Athena Redis-Konnektor-Projekt ist lizenziert unter [Apache-2.0-Lizenz](https://www.apache.org/licenses/LICENSE-2.0.html).

## Weitere Ressourcen
<a name="connectors-redis-additional-resources"></a>

Weitere Informationen zu diesem Connector finden Sie auf [der entsprechenden Website](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-redis) auf GitHub .com.

# Amazon Athena Redshift Konnektor
<a name="connectors-redshift"></a>

Der Amazon-Athena-Redshift-Konnektor ermöglicht Amazon Athena den Zugriff auf Ihre Amazon Redshift und Amazon Redshift Serverless-Datenbanken, einschließlich Redshift Serverless-Ansichten. Sie können sich mit beiden Diensten verbinden, indem Sie die auf dieser Seite beschriebenen Konfigurationseinstellungen für die JDBC-Verbindungszeichenfolge verwenden.

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
<a name="connectors-redshift-prerequisites"></a>
+ Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Für weitere Informationen siehe [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md) oder [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md).

## Einschränkungen
<a name="connectors-redshift-limitations"></a>
+ 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)](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) im *AWS Lambda -Entwicklerhandbuch.*
+ Da Redshift keine externen Partitionen unterstützt, werden alle in einer Abfrage angegebenen Daten jedes Mal abgerufen.
+ Wie Redshift behandelt Athena abschließende Leerzeichen in `CHAR` Redshift -Typen aus Längen- und Vergleichsgründen als semantisch unbedeutend. Beachten Sie, dass dies nur für `CHAR`-Typen gilt, nicht aber für `VARCHAR`-Typen. Athena ignoriert abschließende Leerzeichen für den `CHAR` Typ, behandelt sie jedoch als signifikant für den `VARCHAR`-Typ.

## Bedingungen
<a name="connectors-redshift-terms"></a>

Die folgenden Begriffe beziehen sich auf den Redshift-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 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.

## Parameters
<a name="connectors-redshift-parameters"></a>

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

### Glue Connections (empfohlen)
<a name="redshift-gc"></a>

Wir empfehlen, dass Sie einen Redshift-Connector mithilfe eines Glue-Connections-Objekts konfigurieren. Setzen Sie dazu die `glue_connection`-Umgebungsvariable des Amazon Redshift-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 REDSHIFT
```

**Lambda-Umgebungseigenschaften**

**glue\$1connection** – Gibt den Namen der Glue-Connection an, die dem Verbund-Connector zugeordnet ist. 

**Anmerkung**  
Alle Konnektoren, die Glue-Verbindungen verwenden, müssen diese AWS Secrets Manager zum Speichern von Anmeldeinformationen verwenden.
Der mit Glue-Connection erstellte Redshift-Connector unterstützt die Verwendung eines Multiplexing-Handlers nicht.
Der mit Glue-Connection erstellte Redshift-Connector unterstützt nur `ConnectionSchemaVersion` 2.

### Legacy-Connections
<a name="redshift-legacy"></a>

**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-Datenquellenkonnektoren, die ohne eine zugehörige Glue-Connection erstellt wurden. Verwenden Sie die folgenden Parameter nur, wenn Sie eine frühere Version eines Athena-Datenquellenkonnektors [manuell bereitstellen](connect-data-source-serverless-app-repo.md) oder wenn die `glue_connection`-Umgebungseigenschaft nicht angegeben ist.

**Lambda-Umgebungseigenschaften**
+ **spill\$1bucket** – Gibt den Amazon S3-Bucket für Daten an, die die Lambda-Funktionsgrenzen überschreiten.
+ **spill\$1prefix** – (Optional) Ist standardmäßig ein Unterordner im angegebenen `spill_bucket` genannt `athena-federation-spill`. Wir empfehlen Ihnen, einen Amazon-S3-[Speicher-Lebenszyklus](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) an dieser Stelle zu konfigurieren, um die Überlaufe zu löschen, die älter als eine festgelegte Anzahl von Tagen oder Stunden sind.
+ **spill\$1put\$1request\$1headers** – (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 [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)in der *Amazon Simple Storage Service API-Referenz.*
+ **kms\$1key\$1id** – (Optional) Standardmäßig werden alle Daten, die an Amazon S3 gesendet 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, wie`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, können Sie eine ID einer Verschlüsselung angeben.
+ **disable\$1spill\$1encryption** – (Optional) Bei Einstellung auf `True`, wird die Spill-Verschlüsselung deaktiviert. Die Standardeinstellung ist `False`, sodass Daten, die an S3 übertrragen werden, mit AES-GCM verschlüsselt werden - entweder mit einem zufällig generierten Schlüssel oder mit KMS zum Generieren von Schlüsseln. Das Deaktivieren der Überlauf-Verschlüsselung kann die Leistung verbessern, insbesondere wenn Ihr Überlauf-Standort eine [serverseitige Verschlüsselung](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) verwendet.
+ **disable\$1glue** — (Optional) Falls vorhanden und auf true gesetzt, versucht der Connector nicht, zusätzliche Metadaten von abzurufen. AWS Glue
+ **glue\$1catalog** – (Optional) Verwenden Sie diese Option, um einen [kontoübergreifenden AWS Glue -Katalog](data-sources-glue-cross-account.md) anzugeben. Standardmäßig versucht der Connector, Metadaten von seinem eigenen Konto abzurufen. AWS Glue 

#### Verbindungszeichenfolge
<a name="connectors-redshift-connection-string"></a>

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

```
redshift://${jdbc_connection_string}
```

#### Verwenden eines Multiplexing-Handlers
<a name="connectors-redshift-using-a-multiplexing-handler"></a>

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 | RedshiftMuxCompositeHandler | 
| Metadaten-Handler | RedshiftMuxMetadataHandler | 
| Record Handler | RedshiftMuxRecordHandler | 

##### Multiplex-Handler-Parameter
<a name="connectors-redshift-multiplexing-handler-parameters"></a>


****  

| Parameter | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | 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 myredshiftcatalog ist, dann lautet der Name der Umgebungsvariablen myredshiftcatalog\$1connection\$1string. | 
| default | Erforderlich Die standardmäßige Verbindungszeichenfolge. Diese Zeichenfolge wird verwendet, wenn der Katalog verwendet wird lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Die folgenden Beispieleigenschaften gelten für eine Redshift MUX Lambda-Funktion, die zwei Datenbankinstanzen unterstützt: `redshift1` (die Standardeinstellung) und `redshift2`.


****  

| Eigenschaft | Wert | 
| --- | --- | 
| default | redshift://jdbc:redshift://redshift1.host:5439/dev?user=sample2&password=sample2 | 
| redshift\$1catalog1\$1connection\$1string | redshift://jdbc:redshift://redshift1.host:3306/default?\$1\$1Test/RDS/Redshift1\$1 | 
| redshift\$1catalog2\$1connection\$1string | redshift://jdbc:redshift://redshift2.host:3333/default?user=sample2&password=sample2 | 

##### Bereitstellen von Anmeldeinformationen
<a name="connectors-redshift-providing-credentials"></a>

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 hartcodierten Geheimnissen nach AWS Secrets Manager finden Sie AWS Secrets Manager im *AWS Secrets Manager Benutzerhandbuch* unter [Verschieben von hartcodierten Geheimnissen nach](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html).
+ **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](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) oder einen [VPC-Endpunkt verfügen, um eine Verbindung zu Secrets](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html) Manager herzustellen.

  Sie können den Namen eines Geheimnisses in AWS Secrets Manager Ihre 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, eine Rotation der Anmeldeinformationen zu verwenden AWS Secrets Manager . 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 Secret-Namen**  
Die folgende Zeichenfolge hat den Secret-Namen \$1\$1Test/RDS/ `Redshift1`\$1.

```
redshift://jdbc:redshift://redshift1.host:3306/default?...&${Test/RDS/Redshift1}&...
```

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

```
redshift://jdbc:redshift://redshift1.host:3306/default?...&user=sample2&password=sample2&...
```

Derzeit erkennt der Redshift-Konnektor die `user`- und `password`-JDBC-Eigenschaften.

## Datentypunterstützung
<a name="connectors-redshift-data-type-support"></a>

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 | 
| Date | DateDay | 
| Zeitstempel | DateMilli | 
| Zeichenfolge | Varchar | 
| Bytes | Varbinary | 
| BigDecimal | Dezimal | 
| ARRAY | Auflisten | 

## Partitionen und Splits
<a name="connectors-redshift-partitions-and-splits"></a>

Redshift unterstützt keine externen Partitionen. Informationen zur leistungsbezogenen Problemen finden Sie unter [Leistung](#connectors-redshift-performance).

## Leistung
<a name="connectors-redshift-performance"></a>

Der Athena-Redshift-Konnektor führt einen Prädikat-Pushdown durch, um die Anzahl der von der Abfrage gescannten Daten zu reduzieren. `LIMIT`-Klauseln, `ORDER BY`-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. Die Auswahl einer Teilmenge von Spalten führt jedoch manchmal zu einer längeren Laufzeit der Abfrageausführung. Amazon Redshift ist besonders anfällig für eine Verlangsamung der Abfrageausführung, wenn Sie mehrere Abfragen gleichzeitig ausführen.

### LIMIT-Klauseln
<a name="connectors-redshift-performance-limit-clauses"></a>

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.

### Top-N-Abfragen
<a name="connectors-redshift-performance-top-n-queries"></a>

Eine Top-`N`-Abfrage gibt eine Reihenfolge der Ergebnismenge und eine Obergrenze für die Anzahl der zurückgegebenen Zeilen an. Sie können diesen Abfragetyp verwenden, um die höchsten `N`-Höchstwerte oder die höchsten `N`-Minimalwerte für Ihre Datensätze zu ermitteln. Mit `N`-Pushdown gibt der Konnektor nur `N`-geordnete Zeilen an Athena zurück.

### Prädikate
<a name="connectors-redshift-performance-predicates"></a>

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

Die folgenden Athena-Redshift-Konnektor-Operatoren unterstützen Prädikat-Pushdown:
+ **Boolean: **UND, ODER, NICHT
+ **Gleichheit: **GLEICH, NICHT-GLEICH, WENIGER\$1ALS, WENIGER\$1ODER-GLEICH, GRÖSSER\$1ALS, GRÖSSER\$1ODER-GLEICH, IST\$1UNTERSCHIEDEN VON, NULL\$1WENN, IST\$1NULL
+ **Arithmetik: **ADDIEREN, SUBTRAHIEREN, MULTIPLIZIEREN, DIVIDIEREN, MODULIEREN, NEGIEREN
+ **Andere: WIE\$1MUSTER, IN**

### Beispiel für einen kombinierten Pushdown
<a name="connectors-redshift-performance-pushdown-example"></a>

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%') 
ORDER BY col_a DESC 
LIMIT 10;
```

Einen Artikel über die Verwendung von Prädikat-Pushdown zur Verbesserung der Leistung bei Verbundabfragen, einschließlich Amazon Redshift, finden Sie unter [Verbessern von Verbundabfragen mit Prädikat-Pushdown in Amazon Athena](https://aws.amazon.com/blogs/big-data/improve-federated-queries-with-predicate-pushdown-in-amazon-athena/) im *AWS -Big-Data-Blog*.

## Pass-Through-Abfragen
<a name="connectors-redshift-passthrough-queries"></a>

Der Redshift-Connector unterstützt [Pass-Through-Abfragen.](federated-query-passthrough.md) Pass-Through-Abfragen verwenden eine Tabellenfunktion, um Ihre vollständige Abfrage zur Ausführung an die Datenquelle weiterzuleiten.

Um Pass-Through-Abfragen mit Redshift 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 Redshift 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'
        ))
```

## Weitere Ressourcen
<a name="connectors-redshift-additional-resources"></a>

Die neuesten Informationen zur JDBC-Treiberversion finden Sie in der Datei [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-redshift/pom.xml) für den Redshift-Connector auf .com. GitHub

Weitere Informationen zu diesem Connector finden Sie auf [der entsprechenden Website](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-redshift) unter .com. GitHub

# Amazon Athena SAP HANA Konnektor
<a name="connectors-sap-hana"></a>

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
<a name="connectors-saphana-prerequisites"></a>
+ Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Für weitere Informationen siehe [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md) oder [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md).

## Einschränkungen
<a name="connectors-sap-hana-limitations"></a>
+ 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)](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) 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
<a name="connectors-sap-hana-terms"></a>

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 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.

## Parameters
<a name="connectors-sap-hana-parameters"></a>

Verwenden Sie die Parameter in diesem Abschnitt, um den SAP-HANA-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](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) abweichen. Verwenden Sie ab dem 3. Dezember 2024 die folgenden Parameter nur, wenn Sie eine frühere Version eines Athena-Datenquellen-Connectors [manuell bereitstellen](connect-data-source-serverless-app-repo.md).

### Glue Connections (empfohlen)
<a name="connectors-sap-hana-gc"></a>

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\$1connection** – Gibt den Namen der Glue-Connection an, die dem Verbund-Connector zugeordnet ist. 
+ **casing\$1mode** – (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-Verbindungen verwenden, müssen diese 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.

### Legacy-Connections
<a name="connectors-sap-hana-legacy"></a>

#### Verbindungszeichenfolge
<a name="connectors-sap-hana-connection-string"></a>

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

```
saphana://${jdbc_connection_string}
```

#### Verwenden eines Multiplexing-Handlers
<a name="connectors-sap-hana-using-a-multiplexing-handler"></a>

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
<a name="connectors-sap-hana-multiplexing-handler-parameters"></a>


****  

| Parameter | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | 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\$1connection\$1string. | 
| default | Erforderlich Die standardmäßige Verbindungszeichenfolge. Diese Zeichenfolge wird verwendet, wenn der Katalog verwendet wird lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

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/?\$1\$1Test/RDS/ Saphana1\$1 | 
| saphana\$1catalog1\$1connection\$1string | saphana://jdbc:sap://saphana1.host:port/?\$1\$1Test/RDS/ Saphana1\$1 | 
| saphana\$1catalog2\$1connection\$1string | saphana://jdbc:sap://saphana2.host:port/?user=sample2&password=sample2 | 

##### Bereitstellen von Anmeldeinformationen
<a name="connectors-sap-hana-providing-credentials"></a>

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 hartcodierten Geheimnissen nach AWS Secrets Manager finden Sie AWS Secrets Manager im *AWS Secrets Manager Benutzerhandbuch* unter [Verschieben von hartcodierten Geheimnissen nach](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html).
+ **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](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) oder einen [VPC-Endpunkt verfügen, um eine Verbindung zu Secrets](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html) Manager herzustellen.

  Sie können den Namen eines Geheimnisses in AWS Secrets Manager Ihre 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, eine Rotation der Anmeldeinformationen zu verwenden AWS Secrets Manager . 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
<a name="connectors-sap-hana-using-a-single-connection-handler"></a>

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
<a name="connectors-sap-hana-single-connection-handler-parameters"></a>


****  

| Parameter | Description | 
| --- | --- | 
| 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
<a name="connectors-sap-hana-spill-parameters"></a>

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 | Description | 
| --- | --- | 
| spill\$1bucket | Erforderlich Überlauf-Bucket-Name. | 
| spill\$1prefix | Erforderlich Schlüssel-Prefix für den Überlauf-Bucket. | 
| spill\$1put\$1request\$1headers | (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. \$1"x-amz-server-side-encryption" : "AES256"\$1). Weitere mögliche Header finden Sie [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)in der Amazon Simple Storage Service API-Referenz. | 

## Datentypunterstützung
<a name="connectors-sap-hana-data-type-support"></a>

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 | 
| Date | DateDay | 
| Zeitstempel | DateMilli | 
| Zeichenfolge | Varchar | 
| Bytes | Varbinary | 
| BigDecimal | Dezimal | 
| ARRAY | Auflisten | 

## Datentypkonvertierungen
<a name="connectors-sap-hana-data-type-conversions"></a>

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 | 
| DATE | DATEDAY | 
| TIMESTAMP (ZEITSTEMPEL) | DATEMILLI | 

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

## Partitionen und Splits
<a name="connectors-sap-hana-partitions-and-splits"></a>

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 \$1 ausgegeben, was einer einzelnen Partition entspricht. Eine Partition entspricht einem Split.


****  

| Name | Typ | Description | 
| --- | --- | --- | 
| PART\$1ID | Ganzzahl | Benannte Partition in SAP HANA. | 

## Leistung
<a name="connectors-sap-hana-performance"></a>

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
<a name="connectors-saphana-performance-limit-clauses"></a>

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
<a name="connectors-saphana-performance-predicates"></a>

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\$1ALS, WENIGER\$1ODER-GLEICH, GRÖSSER\$1ALS, GRÖSSER\$1ODER-GLEICH, IST\$1UNTERSCHIEDEN VON, NULL\$1WENN, IST\$1NULL
+ **Arithmetik: **ADDIEREN, SUBTRAHIEREN, MULTIPLIZIEREN, DIVIDIEREN, MODULIEREN, NEGIEREN
+ **Andere: WIE\$1MUSTER, IN**

### Beispiel für einen kombinierten Pushdown
<a name="connectors-saphana-performance-pushdown-example"></a>

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
<a name="connectors-saphana-passthrough-queries"></a>

Der SAP-HANA-Connector unterstützt [Pass-Through-Abfragen.](federated-query-passthrough.md) 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
<a name="connectors-saphana-license-information"></a>

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](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-saphana/pom.xml) für diesen Connector und stimmen den Bedingungen der jeweiligen Drittanbieterlizenzen zu, die in der Datei [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-saphana/LICENSE.txt) auf GitHub .com enthalten sind.

## Weitere Ressourcen
<a name="connectors-saphana-additional-resources"></a>

Die neuesten Informationen zur JDBC-Treiberversion finden Sie in der Datei [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-saphana/pom.xml) für den SAP HANA-Connector auf GitHub .com.

Weitere Informationen zu diesem Connector finden Sie auf [ GitHubder entsprechenden Website](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-saphana) unter .com.

# Amazon Athena Snowflake Konnektor
<a name="connectors-snowflake"></a>

Der Amazon-Athena-Konnektor für [Snowflake](https://www.snowflake.com/) ermöglicht es Amazon Athena, SQL-Abfragen für Daten auszuführen, die in Snowflake gespeichert sind.

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
<a name="connectors-snowflake-prerequisites"></a>

Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder `CreateDataCatalog`-API-Operation bereit. Weitere Informationen finden Sie unter [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md).

## Einschränkungen
<a name="connectors-snowflake-limitations"></a>
+ 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)](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) im *AWS Lambda -Entwicklerhandbuch.*
+ Nur ältere Verbindungen unterstützen das Multiplexer-Setup. 
+ Derzeit werden Snowflake-Ansichten mit Einzelaufteilung unterstützt. 
+  In Snowflake wird bei Objektnamen zwischen Groß- und Kleinschreibung unterschieden. Athena akzeptiert in DDL- und DML-Abfragen gemischte Groß- und [Kleinschreibung](https://docs.aws.amazon.com/athena/latest/ug/tables-databases-columns-names.html#table-names-and-table-column-names-in-ate-must-be-lowercase), aber standardmäßig werden Objektnamen bei der Ausführung der Abfrage in Kleinbuchstaben geschrieben. Der Snowflake-Connector unterstützt nur Kleinbuchstaben, wenn Glue Catalog/Lake Formation verwendet wird. Wenn der Athena-Katalog verwendet wird, können Kunden das Verhalten der Groß- und Kleinschreibung mithilfe der `casing_mode` Lambda-Umgebungsvariablen steuern, deren mögliche Werte im [Parameters](#connectors-snowflake-parameters) Abschnitt aufgeführt sind (z. B.`key=casing_mode, value = CASE_INSENSITIVE_SEARCH`). 

## Bedingungen
<a name="connectors-snowflake-terms"></a>

Die folgenden Begriffe und Konzepte beziehen sich auf den Snowflake-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 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.

## Parameters
<a name="connectors-snowflake-parameters"></a>

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

### Glue Connections (empfohlen)
<a name="snowflake-gc"></a>

Wir empfehlen, dass Sie einen Snowflake-Connector mithilfe eines Glue-Connections-Objekts konfigurieren. Setzen Sie dazu die `glue_connection`-Umgebungsvariable des Snowflake-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 SNOWFLAKE
```

**Lambda-Umgebungseigenschaften**
+ **glue\$1connection** – Gibt den Namen der Glue-Connection an, die dem Verbund-Connector zugeordnet ist. 
+ **casing\$1mode** – (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** — Ändert die Groß- und Kleinschreibung der angegebenen Schema- und Tabellennamen nicht (führen Sie die Abfrage unverändert für Snowflake aus). Dies ist der Standardwert, wenn **casing\$1mode** nicht angegeben ist. 
  + **UPPER** — Alle angegebenen Schema- und Tabellennamen in der Abfrage werden in Großbuchstaben geschrieben, bevor sie für Snowflake ausgeführt wird.
  + **LOWER** — Kleinschreibung aller angegebenen Schema- und Tabellennamen in der Abfrage, bevor sie für Snowflake ausgeführt wird.
  + **CASE\$1INSENSITIVE\$1SEARCH — Führt Suchen** in Schema- und Tabellennamen in Snowflake ohne Berücksichtigung der Groß- und Kleinschreibung durch. Sie können diesen Modus beispielsweise verwenden, wenn Sie eine Abfrage wie Snowflake haben und Snowflake eine Tabelle mit dem Namen enthält. `SELECT * FROM EMPLOYEE` `Employee` Bei Namenskollisionen, z. B. wenn eine Tabelle `EMPLOYEE` und eine andere Tabelle `Employee` in Snowflake aufgerufen werden, schlägt die Abfrage jedoch fehl.

**Anmerkung**  
Der mit Glue-Connection erstellte Snowflake-Connector unterstützt die Verwendung eines Multiplexing-Handlers nicht.
Der mit Glue-Connection erstellte Snowflake-Connector unterstützt nur `ConnectionSchemaVersion` 2.

**Anmeldeinformationen werden gespeichert**

Alle Konnektoren, die Glue-Verbindungen verwenden, müssen diese AWS Secrets Manager zum Speichern von Anmeldeinformationen verwenden. Weitere Informationen finden Sie unter [Mit Snowflake authentifizieren](connectors-snowflake-authentication.md).

### Legacy-Connections
<a name="snowflake-legacy"></a>

**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-Datenquellenkonnektoren, die ohne eine zugehörige Glue-Connection erstellt wurden. Verwenden Sie die folgenden Parameter nur, wenn Sie eine frühere Version eines Athena-Datenquellenkonnektors [manuell bereitstellen](connect-data-source-serverless-app-repo.md) oder wenn die `glue_connection`-Umgebungseigenschaft nicht angegeben ist.

**Lambda-Umgebungseigenschaften**
+ **default** – Die JDBC-Verbindungszeichenfolge, die für die Verbindung mit der Snowflake-Datenbankinstance verwendet werden soll. Beispiel: `snowflake://${jdbc_connection_string}`
+ **catalog\$1connection\$1string** – Wird vom Multiplexing-Handler verwendet (wird nicht unterstützt, wenn eine Glue-Connection verwendet wird). 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 mysnowflakecatalog ist, dann lautet der Name der Umgebungsvariablen mysnowflakecatalog\$1connection\$1string.
+ **casing\$1mode** – (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:
  + **KEINE** — Ändern Sie die Groß-/Kleinschreibung der angegebenen Schema- und Tabellennamen nicht (führen Sie die Abfrage unverändert für Snowflake aus). Dies ist der Standardwert, wenn **casing\$1mode** nicht angegeben ist. 
  + **UPPER** — Alle angegebenen Schema- und Tabellennamen in der Abfrage werden in Großbuchstaben geschrieben, bevor sie für Snowflake ausgeführt wird.
  + **LOWER** — Kleinschreibung aller angegebenen Schema- und Tabellennamen in der Abfrage, bevor sie für Snowflake ausgeführt wird.
  + **CASE\$1INSENSITIVE\$1SEARCH — Führt Suchen** in Schema- und Tabellennamen in Snowflake ohne Berücksichtigung der Groß- und Kleinschreibung durch. Sie können diesen Modus beispielsweise verwenden, wenn Sie eine Abfrage wie Snowflake haben und Snowflake eine Tabelle mit dem Namen enthält. `SELECT * FROM EMPLOYEE` `Employee` Bei Namenskollisionen, z. B. wenn eine Tabelle `EMPLOYEE` und eine andere Tabelle `Employee` in Snowflake aufgerufen werden, schlägt die Abfrage jedoch fehl.
+ **spill\$1bucket** – Gibt den Amazon S3-Bucket für Daten an, die die Lambda-Funktionsgrenzen überschreiten.
+ **spill\$1prefix** – (Optional) Ist standardmäßig ein Unterordner im angegebenen `spill_bucket` genannt `athena-federation-spill`. Wir empfehlen Ihnen, einen Amazon-S3-[Speicher-Lebenszyklus](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) an dieser Stelle zu konfigurieren, um die Überlaufe zu löschen, die älter als eine festgelegte Anzahl von Tagen oder Stunden sind.
+ **spill\$1put\$1request\$1headers** – (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 [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)in der *Amazon Simple Storage Service API-Referenz.*
+ **kms\$1key\$1id** – (Optional) Standardmäßig werden alle Daten, die an Amazon S3 gesendet 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, wie`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, können Sie eine ID einer Verschlüsselung angeben.
+ **disable\$1spill\$1encryption** – (Optional) Bei Einstellung auf `True`, wird die Spill-Verschlüsselung deaktiviert. Die Standardeinstellung ist `False`, sodass Daten, die an S3 übertrragen werden, mit AES-GCM verschlüsselt werden - entweder mit einem zufällig generierten Schlüssel oder mit KMS zum Generieren von Schlüsseln. Das Deaktivieren der Überlauf-Verschlüsselung kann die Leistung verbessern, insbesondere wenn Ihr Überlauf-Standort eine [serverseitige Verschlüsselung](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) verwendet.

#### Verbindungszeichenfolge
<a name="connectors-snowflake-connection-string"></a>

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

```
snowflake://${jdbc_connection_string}
```

#### Verwenden eines Multiplexing-Handlers
<a name="connectors-snowflake-using-a-multiplexing-handler"></a>

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 | SnowflakeMuxCompositeHandler | 
| Metadaten-Handler | SnowflakeMuxMetadataHandler | 
| Record Handler | SnowflakeMuxRecordHandler | 

##### Multiplex-Handler-Parameter
<a name="connectors-snowflake-multiplexing-handler-parameters"></a>


****  

| Parameter | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | 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 mysnowflakecatalog ist, dann lautet der Name der Umgebungsvariablen mysnowflakecatalog\$1connection\$1string. | 
| default | Erforderlich Die standardmäßige Verbindungszeichenfolge. Diese Zeichenfolge wird verwendet, wenn der Katalog verwendet wird lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Die folgenden Beispieleigenschaften beziehen sich auf eine Snowflake MUX Lambda-Funktion, die zwei Datenbank-Instances unterstützt: `snowflake1` (Standard) und `snowflake2`.


****  

| Eigenschaft | Wert | 
| --- | --- | 
| default | snowflake://jdbc:snowflake://snowflake1.host:port/?warehouse=warehousename&db=db1&schema=schema1&\$1\$1Test/RDS/Snowflake1\$1 | 
| snowflake\$1catalog1\$1connection\$1string | snowflake://jdbc:snowflake://snowflake1.host:port/?warehouse=warehousename&db=db1&schema=schema1\$1\$1Test/RDS/Snowflake1\$1 | 
| snowflake\$1catalog2\$1connection\$1string | snowflake://jdbc:snowflake://snowflake2.host:port/?warehouse=warehousename&db=db1&schema=schema1&user=sample2&password=sample2 | 

##### Bereitstellen von Anmeldeinformationen
<a name="connectors-snowflake-providing-credentials"></a>

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 hartcodierten Geheimnissen nach AWS Secrets Manager finden Sie AWS Secrets Manager im *AWS Secrets Manager Benutzerhandbuch* unter [Verschieben von hartcodierten Geheimnissen nach](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html).
+ **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](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) oder einen [VPC-Endpunkt verfügen, um eine Verbindung zu Secrets](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html) Manager herzustellen.

  Sie können den Namen eines Geheimnisses in AWS Secrets Manager Ihre 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, eine Rotation der Anmeldeinformationen zu verwenden AWS Secrets Manager . 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/Snowflake1}`.

```
snowflake://jdbc:snowflake://snowflake1.host:port/?warehouse=warehousename&db=db1&schema=schema1${Test/RDS/Snowflake1}&... 
```

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

```
snowflake://jdbc:snowflake://snowflake1.host:port/warehouse=warehousename&db=db1&schema=schema1&user=sample2&password=sample2&... 
```

Derzeit erkennt Snowflake die `user`- und `password`-JDBC-Eigenschaften. Es akzeptiert auch den Benutzernamen und das Passwort in dem Format *username* `/` *password* ohne die Schlüssel `user` oder`password`.

#### Verwenden eines einzelnen Verbindungs-Handlers
<a name="connectors-snowflake-using-a-single-connection-handler"></a>

Sie können die folgenden Metadaten und Record Handler für eine einzelne Verbindung verwenden, um eine Verbindung zu einer einzelnen Snowflake-Instance herzustellen.


****  

| Handler-Typ | Klasse | 
| --- | --- | 
| Composite Handler | SnowflakeCompositeHandler | 
| Metadaten-Handler | SnowflakeMetadataHandler | 
| Record Handler | SnowflakeRecordHandler | 

##### Parameter für Einzelverbindungs-Handler
<a name="connectors-snowflake-single-connection-handler-parameters"></a>


****  

| Parameter | Description | 
| --- | --- | 
| 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 Snowflake-Instance, die von einer Lambda-Funktion unterstützt wird.


****  

| Eigenschaft | Wert | 
| --- | --- | 
| default | snowflake://jdbc:snowflake://snowflake1.host:port/?secret=Test/RDS/Snowflake1 | 

#### Überlauf-Parameter
<a name="connectors-snowflake-spill-parameters"></a>

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 | Description | 
| --- | --- | 
| spill\$1bucket | Erforderlich Überlauf-Bucket-Name. | 
| spill\$1prefix | Erforderlich Schlüssel-Prefix für den Überlauf-Bucket. | 
| spill\$1put\$1request\$1headers | (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. \$1"x-amz-server-side-encryption" : "AES256"\$1). Weitere mögliche Header finden Sie [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)in der Amazon Simple Storage Service API-Referenz. | 

## Datentypunterstützung
<a name="connectors-snowflake-data-type-support"></a>

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 | 
| Date | DateDay | 
| Zeitstempel | DateMilli | 
| Zeichenfolge | Varchar | 
| Bytes | Varbinary | 
| BigDecimal | Dezimal | 
| ARRAY | Auflisten | 

## Datentypkonvertierungen
<a name="connectors-snowflake-data-type-conversions"></a>

Zusätzlich zu den Konvertierungen von JDBC in Arrow führt der Konnektor bestimmte andere Konvertierungen durch, um die Snowflake-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 (Snowflake) | Konvertierter Datentyp (Athena) | 
| --- | --- | 
| TIMESTAMP (ZEITSTEMPEL) | TIMESTAMPMILLI | 
| DATE | TIMESTAMPMILLI | 
| INTEGER | INT | 
| DECIMAL | BIGINT | 
| TIMESTAMP\$1NTZ | TIMESTAMPMILLI | 

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

## Partitionen und Splits
<a name="connectors-snowflake-partitions-and-splits"></a>

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.

Um diese synthetische Spalte und die Partitionen zu erstellen, benötigt Athena die Definition eines Primärschlüssels. Da Snowflake jedoch keine Einschränkungen für Primärschlüssel erzwingt, müssen Sie die Eindeutigkeit selbst durchsetzen. Wenn Sie dies nicht tun, verwendet Athena standardmäßig eine Einzelaufteilung.

## Leistung
<a name="connectors-snowflake-performance"></a>

Verwenden Sie nach Möglichkeit Filter in Abfragen, um eine optimale Leistung zu erzielen. Darüber hinaus empfehlen wir dringend die native Partitionierung, um riesige Datensätze mit einheitlicher Partitionsverteilung abzurufen. Die Auswahl einer Teilmenge von Spalten beschleunigt die Abfragelaufzeit erheblich und reduziert die gescannten Daten. Der Snowflake-Konnektor ist aufgrund der Gleichzeitigkeit widerstandsfähig gegenüber Drosselung.

Der Athena-Snowflake-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
<a name="connectors-snowflake-performance-limit-clauses"></a>

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
<a name="connectors-snowflake-performance-predicates"></a>

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

Die folgenden Athena-Snowflake-Konnektor-Operatoren unterstützen Prädikat-Pushdown:
+ **Boolean: **UND, ODER, NICHT
+ **Gleichheit: **GLEICH, NICHT-GLEICH, WENIGER\$1ALS, WENIGER\$1ODER-GLEICH, GRÖSSER\$1ALS, GRÖSSER\$1ODER-GLEICH, IST\$1UNTERSCHIEDEN VON, NULL\$1WENN, IST\$1NULL
+ **Arithmetik: **ADDIEREN, SUBTRAHIEREN, MULTIPLIZIEREN, DIVIDIEREN, MODULIEREN, NEGIEREN
+ **Andere: WIE\$1MUSTER, IN**

### Beispiel für einen kombinierten Pushdown
<a name="connectors-snowflake-performance-pushdown-example"></a>

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;
```

# Mit Snowflake authentifizieren
<a name="connectors-snowflake-authentication"></a>

Sie können den Amazon Athena Snowflake-Connector so konfigurieren, dass er entweder die Schlüsselpaar-Authentifizierung oder die OAuth Authentifizierungsmethode verwendet, um eine Verbindung zu Ihrem Snowflake-Data Warehouse herzustellen. Beide Methoden bieten sicheren Zugriff auf Snowflake und machen das Speichern von Passwörtern in Verbindungszeichenfolgen überflüssig.
+ **Schlüsselpaar-Authentifizierung** – Diese Methode verwendet öffentliche oder private RSA-Schlüsselpaare zur Authentifizierung bei Snowflake. Der private Schlüssel signiert Authentifizierungsanfragen digital, während der entsprechende öffentliche Schlüssel zur Überprüfung in Snowflake registriert wird. Diese Methode macht die Speicherung von Passwörtern überflüssig.
+ **OAuth Authentifizierung** — Diese Methode verwendet das Autorisierungstoken und das Aktualisierungstoken zur Authentifizierung bei Snowflake. Sie unterstützt die automatische Token-Aktualisierung und ist somit für lang laufende Anwendungen geeignet.

Weitere Informationen finden Sie unter [Schlüsselpaar-Authentifizierung und [OAuth Authentifizierung](https://docs.snowflake.com/en/user-guide/oauth-custom)](https://docs.snowflake.com/en/user-guide/key-pair-auth) im Snowflake-Benutzerhandbuch.

## Voraussetzungen
<a name="connectors-snowflake-authentication-prerequisites"></a>

Stellen Sie vor Beginn sicher, dass die folgenden Voraussetzungen erfüllt sind:
+ Zugriff auf das Snowflake-Konto mit Administratorrechten.
+ Snowflake-Benutzerkonto speziell für den Athena-Konnektor.
+ OpenSSL oder gleichwertige Tools zur Schlüsselgenerierung für die Schlüsselpaar-Authentifizierung.
+ AWS Secrets Manager Zugriff zum Erstellen und Verwalten von Geheimnissen.
+ Webbrowser, um den OAuth Ablauf für die OAuth Authentifizierung abzuschließen.

## Schlüsselpaar-Authentifizierung konfigurieren
<a name="connectors-snowflake-keypair-authentication"></a>

Dieser Vorgang umfasst die Generierung eines RSA-Schlüsselpaars, die Konfiguration Ihres Snowflake-Kontos mit dem öffentlichen Schlüssel und die sichere Speicherung des privaten Schlüssels in AWS Secrets Manager. Die folgenden Schritte führen Sie durch die Erstellung der kryptografischen Schlüssel, die Einrichtung der erforderlichen Snowflake-Berechtigungen und die Konfiguration der AWS Anmeldeinformationen für eine nahtlose Authentifizierung. 

1. **RSA-Schlüsselpaare generieren**

   Generieren Sie mit OpenSSL ein privates und ein öffentliches Schlüsselpaar.
   + Um eine unverschlüsselte Version zu generieren, verwenden Sie den folgenden Befehl in Ihrer lokalen Befehlszeilenanwendung.

     ```
     openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
     ```
   + Um eine verschlüsselte Version zu generieren, verwenden Sie den folgenden Befehl, der `-nocrypt` auslässt.

     ```
     openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 des3 -inform PEM -out rsa_key.p8
     ```
   + Um einen öffentlichen Schlüssel aus einem privaten Schlüssel zu generieren.

     ```
     openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
     # Set appropriate permissions (Unix/Linux)
     chmod 600 rsa_key.p8
     chmod 644 rsa_key.pub
     ```
**Anmerkung**  
Geben Sie Ihren privaten Schlüssel nicht weiter. Der private Schlüssel sollte nur für die Anwendung zugänglich sein, die sich bei Snowflake authentifizieren muss.

1. **Extrahieren Sie den Inhalt öffentlicher Schlüssel ohne Trennzeichen für Snowflake**

   ```
   # Extract public key content (remove BEGIN/END lines and newlines)
   cat rsa_key.pub | grep -v "BEGIN\|END" | tr -d '\n'
   ```

   Speichern Sie diese Ausgabe, da Sie sie später im nächsten Schritt benötigen werden.

1. **Snowflake-Benutzer konfigurieren**

   Führen Sie zur Konfiguration eines Snowflake-Benutzrs die folgenden Schritte aus.

   1. Erstellen Sie einen dedizierten Benutzer für den Athena-Connector, falls er noch nicht existiert.

      ```
      -- Create user for Athena connector
      CREATE USER athena_connector_user;
      
      -- Grant necessary privileges
      GRANT USAGE ON WAREHOUSE your_warehouse TO ROLE athena_connector_role;
      GRANT USAGE ON DATABASE your_database TO ROLE athena_connector_role;
      GRANT SELECT ON ALL TABLES IN DATABASE your_database TO ROLE athena_connector_role;
      ```

   1. Gewähren Sie Authentifizierungsberechtigungen. Um einem Benutzer einen öffentlichen Schlüssel zuzuweisen, müssen Sie über eine der folgenden Rollen oder Berechtigungen verfügen.
      + Das `MODIFY PROGRAMMATIC AUTHENTICATION METHODS` oder `OWNERSHIP`-Recht für den Benutzer.
      + Die `SECURITYADMIN`-Rolle oder höher.

      Erteilen Sie die notwendigen Berechtigungen für die Zuweisung öffentlicher Schlüssel mit dem folgenden Befehl.

      ```
      GRANT MODIFY PROGRAMMATIC AUTHENTICATION METHODS ON USER athena_connector_user TO ROLE your_admin_role;
      ```

   1. Weisen Sie den öffentlichen Schlüssel mit dem folgenden Befehl dem Snowflake-Benutzer zu.

      ```
      ALTER USER athena_connector_user SET RSA_PUBLIC_KEY='RSAkey';
      ```

      Stellen Sie mit dem folgenden Befehl sicher, dass der öffentliche Schlüssel dem Benutzer erfolgreich zugewiesen wurde.

      ```
      DESC USER athena_connector_user;
      ```

1. **Speichern Sie den privaten Schlüssel in AWS Secrets Manager**

   1. Konvertieren Sie den privaten Schlüssel in das vom Connector benötigte Format.

      ```
      # Read private key content
      cat rsa_key.p8
      ```

   1. Erstellen Sie ein Secret in AWS Secrets Manager mit der folgenden Struktur.

      ```
      {
        "sfUser": "your_snowflake_user",
        "pem_private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----",
        "pem_private_key_passphrase": "passphrase_in_case_of_encrypted_private_key(optional)"
      }
      ```
**Anmerkung**  
Kopf- und Fußzeile sind optional.
Der private Schlüssel muss durch `\n` getrennt werden.

## Konfigurieren Sie die OAuth Authentifizierung
<a name="connectors-snowflake-oauth-authentication"></a>

Diese Authentifizierungsmethode ermöglicht einen sicheren, tokenbasierten Zugriff auf Snowflake mit Funktionen zur automatischen Aktualisierung der Anmeldeinformationen. Der Konfigurationsprozess umfasst das Erstellen einer Sicherheitsintegration in Snowflake, das Abrufen von OAuth Client-Anmeldeinformationen, das Abschließen des Autorisierungsvorgangs zum Abrufen eines Zugangscodes und das Speichern der OAuth Anmeldeinformationen AWS Secrets Manager für die Verwendung durch den Connector. 

1. **Erstellen Sie eine Sicherheitsintegration in Snowflake**

   Führen Sie den folgenden SQL-Befehl in Snowflake aus, um eine Snowflake-Sicherheitsintegration zu erstellen. OAuth

   ```
   CREATE SECURITY INTEGRATION my_snowflake_oauth_integration_a
     TYPE = OAUTH
     ENABLED = TRUE
     OAUTH_CLIENT = CUSTOM
     OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
     OAUTH_REDIRECT_URI = 'https://localhost:8080/oauth/callback'
     OAUTH_ISSUE_REFRESH_TOKENS = TRUE
     OAUTH_REFRESH_TOKEN_VALIDITY = 7776000;
   ```

   **Konfigurationsparameter**
   + `TYPE = OAUTH`— Gibt den OAuth Authentifizierungstyp an.
   + `ENABLED = TRUE` – Aktiviert die Sicherheitsintegration.
   + `OAUTH_CLIENT = CUSTOM`— Verwendet eine benutzerdefinierte OAuth Client-Konfiguration.
   + `OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'` – Legt den Clienttyp für sichere Anwendungen fest.
   + `OAUTH_REDIRECT_URI`— Die Callback-URL für OAuth Flow. Zum Testen kann es sich um Localhost handeln.
   + `OAUTH_ISSUE_REFRESH_TOKENS = TRUE` – Aktiviert die Generierung von Aktualisierungstoken.
   + `OAUTH_REFRESH_TOKEN_VALIDITY = 7776000` – Legt die Gültigkeit des Aktualisierungstokens fest (90 Tage in Sekunden).

1. **Rufen Sie OAuth Client-Geheimnisse ab**

   1. Führen Sie den folgenden SQL-Befehl aus, um die Anmeldeinformationen des Kunden abzurufen.

      ```
      DESC SECURITY INTEGRATION 'MY_SNOWFLAKE_OAUTH_INTEGRATION_A';
      ```

   1. Rufen Sie die OAuth Kundengeheimnisse ab.

      ```
      SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('MY_SNOWFLAKE_OAUTH_INTEGRATION_A');
      ```

      **Beispielantwort**

      ```
      {
        "OAUTH_CLIENT_SECRET_2": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
        "OAUTH_CLIENT_SECRET": "je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY,
        "OAUTH_CLIENT_ID": "AIDACKCEVSQ6C2EXAMPLE"
      }
      ```
**Anmerkung**  
Bewahren Sie diese Anmeldeinformationen sicher auf und geben Sie sie nicht weiter. Diese werden zur Konfiguration des OAuth Clients verwendet.

1. **Benutzer autorisieren und Autorisierungscode abrufen**

   1. Öffnen Sie die folgende URL in einem Browser.

      ```
      https://<your_account>.snowflakecomputing.com/oauth/authorize?client_id=<OAUTH_CLIENT_ID>&response_type=code&redirect_uri=https://localhost:8080/oauth/callback
      ```

   1. Schließen Sie den Autorisierungsablauf ab.

      1. Melden Sie sich mit Ihren Snowflake-Anmeldeinformationen an.

      1. Erteilen Sie die angeforderten Berechtigungen. Sie werden mit einem Autorisierungscode zur Rückruf-URI weitergeleitet.

   1. Extrahieren Sie den Autorisierungscode, indem Sie den Codeparameter aus der Umleitungs-URL kopieren.

      ```
      https://localhost:8080/oauth/callback?code=<authorizationcode>
      ```
**Anmerkung**  
Der Autorisierungscode ist für eine begrenzte Zeit gültig und kann nur einmal verwendet werden.

1. **Speichern Sie die OAuth Anmeldeinformationen in AWS Secrets Manager**

   Erstellen Sie ein Secret in AWS Secrets Manager mit der folgenden Struktur.

   ```
   {
     "redirect_uri": "https://localhost:8080/oauth/callback",
     "client_secret": "je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY",
     "token_url": "https://<your_account>.snowflakecomputing.com/oauth/token-request",
     "client_id": "AIDACKCEVSQ6C2EXAMPLE,
     "username": "your_snowflake_username",
     "auth_code": "authorizationcode"
   }
   ```

   **Pflichtfelder**
   + `redirect_uri`— OAuth leitet die URI weiter, die Sie in Schritt 1 erhalten haben.
   + `client_secret`— OAuth Client-Schlüssel, den Sie in Schritt 2 erhalten haben.
   + `token_url`— Snowflake Der OAuth Token-Endpunkt.
   + `client_id`— Die OAuth Client-ID aus Schritt 2.
   + `username` – Der Snowflake-Benutzername für den Connector.
   + `auth_code` – Der Autorisierungscode, den Sie in Schritt 3 erhalten haben.

Nachdem Sie ein Geheimnis erstellt haben, erhalten Sie einen geheimen ARN, den Sie in Ihrer Glue-Connection verwenden können, wenn Sie [eine Datenquellenverbindung erstellen](connect-to-a-data-source.md). 

## Pass-Through-Abfragen
<a name="connectors-snowflake-passthrough-queries"></a>

Der Snowflake-Connector unterstützt [Pass-Through-Abfragen.](federated-query-passthrough.md) Pass-Through-Abfragen verwenden eine Tabellenfunktion, um Ihre vollständige Abfrage zur Ausführung an die Datenquelle weiterzuleiten.

Um Pass-Through-Abfragen mit Snowflake 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 Snowflake 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
<a name="connectors-snowflake-license-information"></a>

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](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-snowflake/pom.xml) für diesen Connector und stimmen den Bedingungen der jeweiligen Drittanbieterlizenzen zu, die in der Datei [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-snowflake/LICENSE.txt) auf GitHub .com enthalten sind.

## Weitere Ressourcen
<a name="connectors-snowflake-additional-resources"></a>

Die neuesten Informationen zur JDBC-Treiberversion finden Sie in der Datei [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-snowflake/pom.xml) für den Snowflake-Connector auf .com. GitHub

Weitere Informationen zu diesem Connector finden Sie auf [der entsprechenden Website unter .com](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-snowflake). GitHub

# Amazon Athena Microsoft SQL Server Konnektor
<a name="connectors-microsoft-sql-server"></a>

Der Amazon-Athena-Konnektor für [Microsoft SQL Server](https://docs.microsoft.com/en-us/sql/?view=sql-server-ver15) ermöglicht es Amazon Athena, SQL-Abfragen für Ihre Daten auszuführen, die in Microsoft SQL Server unter Verwendungt von JDBC gespeichert sind.

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
<a name="connectors-sqlserver-prerequisites"></a>
+ Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Für weitere Informationen siehe [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md) oder [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md).

## Einschränkungen
<a name="connectors-microsoft-sql-server-limitations"></a>
+ 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)](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) im *AWS Lambda -Entwicklerhandbuch.*
+ Unter Filterbedingungen müssen Sie die `Date`- und `Timestamp`-Datentypen in den entsprechenden Datentyp umwandeln.
+ So suchen Sie nach negativen Werten des Typs `Real` und `Float`, verwenden Sie den `<=`- oder `>=`-Operator.
+ Die Datentypen `binary`, `varbinary`, `image` und `rowversion` werden nicht unterstützt.

## Bedingungen
<a name="connectors-microsoft-sql-server-terms"></a>

Die folgenden Begriffe beziehen sich auf den SQL Server-Konektor.
+ **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 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.

## Parameters
<a name="connectors-microsoft-sql-server-parameters"></a>

Verwenden Sie die Parameter in diesem Abschnitt, um den SQL-Server-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](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) abweichen. Verwenden Sie ab dem 3. Dezember 2024 die folgenden Parameter nur, wenn Sie eine frühere Version eines Athena-Datenquellen-Connectors [manuell bereitstellen](connect-data-source-serverless-app-repo.md).

### Glue Connections (empfohlen)
<a name="connectors-microsoft-sql-server-gc"></a>

Wir empfehlen, dass Sie einen SQL-Server-Connector mithilfe eines Glue-Connections-Objekts konfigurieren. Setzen Sie dazu die `glue_connection`-Umgebungsvariable des SQL-Server-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 SQLSERVER
```

**Lambda-Umgebungseigenschaften**
+ **glue\$1connection** – Gibt den Namen der Glue-Connection an, die dem Verbund-Connector zugeordnet ist.
+ **casing\$1mode** – (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-Verbindungen verwenden, müssen diese AWS Secrets Manager zum Speichern von Anmeldeinformationen verwenden.
Der mit Glue-Connection erstellte SQL-Server-Connector unterstützt die Verwendung eines Multiplexing-Handlers nicht.
Der mit Glue-Connection erstellte SQL-Server-Connector unterstützt nur `ConnectionSchemaVersion` 2.

### Legacy-Connections
<a name="connectors-microsoft-sql-server-legacy"></a>

#### Verbindungszeichenfolge
<a name="connectors-microsoft-sql-server-connection-string"></a>

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

```
sqlserver://${jdbc_connection_string}
```

#### Verwenden eines Multiplexing-Handlers
<a name="connectors-microsoft-sql-server-using-a-multiplexing-handler"></a>

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 | SqlServerMuxCompositeHandler | 
| Metadaten-Handler | SqlServerMuxMetadataHandler | 
| Record Handler | SqlServerMuxRecordHandler | 

##### Multiplex-Handler-Parameter
<a name="connectors-microsoft-sql-server-multiplexing-handler-parameters"></a>


****  

| Parameter | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | 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 mysqlservercatalog ist, dann lautet der Name der Umgebungsvariablen mysqlservercatalog\$1connection\$1string. | 
| default | Erforderlich Die standardmäßige Verbindungszeichenfolge. Diese Zeichenfolge wird verwendet, wenn der lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME \$1 Katalog | 

Die folgenden Beispieleigenschaften beziehen sich auf eine SqlServer MUX-Lambda-Funktion, die zwei Datenbankinstanzen unterstützt: `sqlserver1` (Standard) und. `sqlserver2`


****  

| Eigenschaft | Wert | 
| --- | --- | 
| default | sqlserver://jdbc:sqlserver://sqlserver1.hostname:port;databaseName=<database\$1name>;\$1\$1secret1\$1name\$1 | 
| sqlserver\$1catalog1\$1connection\$1string | sqlserver://jdbc:sqlserver://sqlserver1.hostname:port;databaseName=<database\$1name>;\$1\$1secret1\$1name\$1 | 
| sqlserver\$1catalog2\$1connection\$1string | sqlserver://jdbc:sqlserver://sqlserver2.hostname:port;databaseName=<database\$1name>;\$1\$1secret2\$1name\$1 | 

##### Bereitstellen von Anmeldeinformationen
<a name="connectors-microsoft-sql-server-providing-credentials"></a>

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 Ihrer hartcodierten Geheimnisse nach finden Sie im AWS Secrets Manager Benutzerhandbuch unter [Verschieben von hartcodierten AWS Secrets Manager Geheimnissen nach](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html).AWS Secrets Manager *
+ **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](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) oder einen [VPC-Endpunkt verfügen, um eine Verbindung zu Secrets](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html) Manager herzustellen.

  Sie können den Namen eines Geheimnisses in AWS Secrets Manager Ihre 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, eine Rotation der Anmeldeinformationen zu verwenden AWS Secrets Manager . 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 `${secret_name}`.

```
sqlserver://jdbc:sqlserver://hostname:port;databaseName=<database_name>;${secret_name}
```

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

```
sqlserver://jdbc:sqlserver://hostname:port;databaseName=<database_name>;user=<user>;password=<password>
```

#### Verwenden eines einzelnen Verbindungs-Handlers
<a name="connectors-microsoft-sql-server-using-a-single-connection-handler"></a>

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


****  

| Handler-Typ | Klasse | 
| --- | --- | 
| Composite Handler | SqlServerCompositeHandler | 
| Metadaten-Handler | SqlServerMetadataHandler | 
| Record Handler | SqlServerRecordHandler | 

##### Parameter für Einzelverbindungs-Handler
<a name="connectors-microsoft-sql-server-single-connection-handler-parameters"></a>


****  

| Parameter | Description | 
| --- | --- | 
| 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 SQL Server-Instance, die von einer Lambda-Funktion unterstützt wird.


****  

| Eigenschaft | Wert | 
| --- | --- | 
| default | sqlserver://jdbc:sqlserver://hostname:port;databaseName=<database\$1name>;\$1\$1secret\$1name\$1 | 

#### Überlauf-Parameter
<a name="connectors-microsoft-sql-server-spill-parameters"></a>

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 | Description | 
| --- | --- | 
| spill\$1bucket | Erforderlich Überlauf-Bucket-Name. | 
| spill\$1prefix | Erforderlich Schlüssel-Prefix für den Überlauf-Bucket. | 
| spill\$1put\$1request\$1headers | (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. \$1"x-amz-server-side-encryption" : "AES256"\$1). Weitere mögliche Header finden Sie [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)in der Amazon Simple Storage Service API-Referenz. | 

## Datentypunterstützung
<a name="connectors-microsoft-sql-server-data-type-support"></a>

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


****  

| SQL Server | 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 | Date(MILLISECOND) | 
| datetime2 | Date(MILLISECOND) | 
| smalldatetime | Date(MILLISECOND) | 
| date | Date(DAY) | 
| time | VARCHAR | 
| datetimeoffset | Date(MILLISECOND) | 
| char[n] | VARCHAR | 
| varchar[n/max] | VARCHAR | 
| nchar[n] | VARCHAR | 
| nvarchar[n/max] | VARCHAR | 
| text | VARCHAR | 
| ntext | VARCHAR | 

## Partitionen und Splits
<a name="connectors-microsoft-sql-server-partitions-and-splits"></a>

Eine Partition wird durch eine einzelne Partitionsspalte vom Typ `varchar` dargestellt. Im Fall des SQL-Server-Konnektors bestimmt eine Partitionsfunktion, wie Partitionen auf die Tabelle angewendet werden. Die Informationen zur Partitionsfunktion und zum Spaltennamen werden aus der SQL Server-Metadatentabelle abgerufen. Eine benutzerdefinierte Abfrage ruft dann die Partition ab. Splits werden basierend auf der Anzahl der empfangenen unterschiedlichen Partitionen erstellt.

## Leistung
<a name="connectors-microsoft-sql-server-performance"></a>

Die Auswahl einer Teilmenge von Spalten beschleunigt die Abfragelaufzeit erheblich und reduziert die gescannten Daten. Der SQL-Server-Konnektor ist aufgrund der Gleichzeitigkeit widerstandsfähig gegenüber Drosselung.

Der Athena-SQL-Server-Konnektor führt einen Prädikat-Pushdown durch, um die von der Abfrage durchsuchten Daten zu verringern. 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
<a name="connectors-sqlserver-performance-predicates"></a>

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

Die folgenden Athena-SQL-Server-Konnektor-Operatoren unterstützen Prädikat-Pushdown:
+ **Boolean: **UND, ODER, NICHT
+ **Gleichheit: **GLEICH, NICHT-GLEICH, WENIGER\$1ALS, WENIGER\$1ODER-GLEICH, GRÖSSER\$1ALS, GRÖSSER\$1ODER-GLEICH, IST\$1UNTERSCHIEDEN VON, NULL\$1WENN, IST\$1NULL
+ **Arithmetik: **ADDIEREN, SUBTRAHIEREN, MULTIPLIZIEREN, DIVIDIEREN, MODULIEREN, NEGIEREN
+ **Andere: WIE\$1MUSTER, IN**

### Beispiel für einen kombinierten Pushdown
<a name="connectors-sqlserver-performance-pushdown-example"></a>

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%');
```

## Pass-Through-Abfragen
<a name="connectors-sqlserver-passthrough-queries"></a>

Der SQL-Server-Connector unterstützt [Pass-Through-Abfragen.](federated-query-passthrough.md) Pass-Through-Abfragen verwenden eine Tabellenfunktion, um Ihre vollständige Abfrage zur Ausführung an die Datenquelle weiterzuleiten.

Um Pass-Through-Abfragen mit SQL Server 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 SQL Server 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
<a name="connectors-sqlserver-license-information"></a>

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](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-sqlserver/pom.xml) für diesen Connector und stimmen den Bedingungen der jeweiligen Drittanbieterlizenzen zu, die in der Datei [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-sqlserver/LICENSE.txt) auf GitHub .com enthalten sind.

## Weitere Ressourcen
<a name="connectors-sqlserver-additional-resources"></a>

Die neuesten Informationen zur JDBC-Treiberversion finden Sie in der Datei [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-sqlserver/pom.xml) für den SQL Server-Connector auf GitHub .com.

Weitere Informationen zu diesem Connector finden Sie auf [ GitHubder entsprechenden Website](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-sqlserver) unter .com.

# Amazon Athena Teradata Konnektor
<a name="connectors-teradata"></a>

 Der Amazon-Athena-Konnektor für Teradata ermöglicht es Athena, SQL-Abfragen für Daten auszuführen, die in Ihren Teradata-Datenbanken gespeichert sind. 

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

## Voraussetzungen
<a name="connectors-teradata-prerequisites"></a>
+ Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Für weitere Informationen siehe [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md) oder [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md).

## Einschränkungen
<a name="connectors-teradata-limitations"></a>
+ 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)](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) im *AWS Lambda -Entwicklerhandbuch.*

## Bedingungen
<a name="connectors-teradata-terms"></a>

Die folgenden Begriffe beziehen sich auf den Teradata-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 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.

## Parameters
<a name="connectors-teradata-parameters"></a>

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

### Glue Connections (empfohlen)
<a name="connectors-teradata-gc"></a>

Wir empfehlen, dass Sie einen Teradata-Connector mithilfe eines Glue-Connections-Objekts konfigurieren. Setzen Sie dazu die `glue_connection`-Umgebungsvariable des Teradata-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 TERADATA
```

**Lambda-Umgebungseigenschaften**
+ **glue\$1connection** – Gibt den Namen der Glue-Connection an, die dem Verbund-Connector zugeordnet ist.
+ **casing\$1mode** – (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-Verbindungen verwenden, müssen diese AWS Secrets Manager zum Speichern von Anmeldeinformationen verwenden.
Der mit Glue-Connection erstellte Teradata-Connector unterstützt die Verwendung eines Multiplexing-Handlers nicht.
Der mit Glue-Connection erstellte Teradata-Connector unterstützt nur `ConnectionSchemaVersion` 2.

### Legacy-Connections
<a name="connectors-teradata-legacy"></a>

#### Verbindungszeichenfolge
<a name="connectors-teradata-connection-string"></a>

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

```
teradata://${jdbc_connection_string}
```

#### Verwenden eines Multiplexing-Handlers
<a name="connectors-teradata-using-a-multiplexing-handler"></a>

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 | TeradataMuxCompositeHandler | 
| Metadaten-Handler | TeradataMuxMetadataHandler | 
| Record Handler | TeradataMuxRecordHandler | 

##### Multiplex-Handler-Parameter
<a name="connectors-teradata-multiplexing-handler-parameters"></a>


****  

| Parameter | Description | 
| --- | --- | 
| \$1catalog\$1connection\$1string | 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 myteradatacatalog ist, dann lautet der Name der Umgebungsvariablen myteradatacatalog\$1connection\$1string. | 
| default | Erforderlich Die standardmäßige Verbindungszeichenfolge. Diese Zeichenfolge wird verwendet, wenn der Katalog verwendet wird lambda:\$1\$1 AWS\$1LAMBDA\$1FUNCTION\$1NAME\$1. | 

Die folgenden Beispieleigenschaften gelten für eine Teradata MUX Lambda-Funktion, die zwei Datenbank-Instances unterstützt: `teradata1` (die Standardeinstellung) und `teradata2`.


****  

| Eigenschaft | Wert | 
| --- | --- | 
| default | teradata://jdbc:teradata://teradata2.host/TMODE=ANSI,CHARSET=UTF8,DATABASE=TEST,user=sample2&password=sample2 | 
| teradata\$1catalog1\$1connection\$1string | teradata://jdbc:teradata://teradata1.host/TMODE=ANSI,CHARSET=UTF8,DATABASE=TEST,\$1\$1Test/RDS/Teradata1\$1 | 
| teradata\$1catalog2\$1connection\$1string | teradata://jdbc:teradata://teradata2.host/TMODE=ANSI,CHARSET=UTF8,DATABASE=TEST,user=sample2&password=sample2 | 

##### Bereitstellen von Anmeldeinformationen
<a name="connectors-teradata-providing-credentials"></a>

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 hartcodierten Geheimnissen nach AWS Secrets Manager finden Sie AWS Secrets Manager im *AWS Secrets Manager Benutzerhandbuch* unter [Verschieben von hartcodierten Geheimnissen nach](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html).
+ **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](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) oder einen [VPC-Endpunkt verfügen, um eine Verbindung zu Secrets](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html) Manager herzustellen.

  Sie können den Namen eines Geheimnisses in AWS Secrets Manager Ihre 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, eine Rotation der Anmeldeinformationen zu verwenden AWS Secrets Manager . 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/Teradata1}`.

```
teradata://jdbc:teradata1.host/TMODE=ANSI,CHARSET=UTF8,DATABASE=TEST,${Test/RDS/Teradata1}&...
```

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

```
teradata://jdbc:teradata://teradata1.host/TMODE=ANSI,CHARSET=UTF8,DATABASE=TEST,...&user=sample2&password=sample2&...
```

Derzeit erkennt Teradata die `user`- und `password`-JDBC-Eigenschaften. Es akzeptiert auch den Benutzernamen und das Passwort in dem Format *username* `/` *password* ohne die Schlüssel `user` oder`password`.

#### Verwenden eines einzelnen Verbindungs-Handlers
<a name="connectors-teradata-using-a-single-connection-handler"></a>

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


****  

| Handler-Typ | Klasse | 
| --- | --- | 
| Composite Handler | TeradataCompositeHandler | 
| Metadaten-Handler | TeradataMetadataHandler | 
| Record Handler | TeradataRecordHandler | 

##### Parameter für Einzelverbindungs-Handler
<a name="connectors-teradata-single-connection-handler-parameters"></a>


****  

| Parameter | Description | 
| --- | --- | 
| 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 Teradata-Instance, die von einer Lambda-Funktion unterstützt wird.


****  

| Eigenschaft | Wert | 
| --- | --- | 
| default | teradata://jdbc:teradata://teradata1.host/TMODE=ANSI,CHARSET=UTF8,DATABASE=TEST,secret=Test/RDS/Teradata1 | 

#### Überlauf-Parameter
<a name="connectors-teradata-spill-parameters"></a>

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 | Description | 
| --- | --- | 
| spill\$1bucket | Erforderlich Überlauf-Bucket-Name. | 
| spill\$1prefix | Erforderlich Schlüssel-Prefix für den Überlauf-Bucket. | 
| spill\$1put\$1request\$1headers | (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. \$1"x-amz-server-side-encryption" : "AES256"\$1). Weitere mögliche Header finden Sie [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)in der Amazon Simple Storage Service API-Referenz. | 

## Datentypunterstützung
<a name="connectors-teradata-data-type-support"></a>

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 | 
| Date | DateDay | 
| Zeitstempel | DateMilli | 
| Zeichenfolge | Varchar | 
| Bytes | Varbinary | 
| BigDecimal | Dezimal | 
| ARRAY | Auflisten | 

## Partitionen und Splits
<a name="connectors-teradata-partitions-and-splits"></a>

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


****  

| Name | Typ | Description | 
| --- | --- | --- | 
| Partition | Ganzzahl | Benannte Partition in Teradata. | 

## Leistung
<a name="connectors-teradata-performance"></a>

Teradata unterstützt native Partitionen. Der Athena-Teradata-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 verlangsamt die Abfragelaufzeit erheblich. Der Konnektor zeigt aufgrund der Gleichzeitigkeit eine gewisse Drosselung.

Der Athena-Teradata-Konnektor 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
<a name="connectors-teradata-performance-predicates"></a>

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

Die folgenden Athena-Teradata-Konnektor-Operatoren unterstützen Prädikat-Pushdown:
+ **Boolean: **UND, ODER, NICHT
+ **Gleichheit: **GLEICH, NICHT-GLEICH, WENIGER\$1ALS, WENIGER\$1ODER\$1GLEICH, GRÖSSER\$1ALS, GRÖSSER\$1ODER\$1GLEICH, NULL\$1WENN, IST\$1NULL
+ **Arithmetik: **ADDIEREN, SUBTRAHIEREN, MULTIPLIZIEREN, DIVIDIEREN, MODULIEREN, NEGIEREN
+ **Andere: WIE\$1MUSTER, IN**

### Beispiel für einen kombinierten Pushdown
<a name="connectors-teradata-performance-pushdown-example"></a>

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%');
```

## Pass-Through-Abfragen
<a name="connectors-teradata-passthrough-queries"></a>

Der Teradata-Connector unterstützt [Pass-Through-Abfragen.](federated-query-passthrough.md) Pass-Through-Abfragen verwenden eine Tabellenfunktion, um Ihre vollständige Abfrage zur Ausführung an die Datenquelle weiterzuleiten.

Um Pass-Through-Abfragen mit Teradata 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 Teradata weiter. Die Abfrage wählt alle Spalten in der `customer`-Tabelle aus.

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

## Lizenzinformationen
<a name="connectors-teradata-license-information"></a>

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](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-teradata/pom.xml) für diesen Connector und stimmen den Bedingungen der jeweiligen Drittanbieterlizenzen zu, die in der Datei [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-teradata/LICENSE.txt) auf GitHub .com enthalten sind.

## Weitere Ressourcen
<a name="connectors-teradata-additional-resources"></a>

Die neuesten Informationen zur JDBC-Treiberversion finden Sie in der Datei [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-teradata/pom.xml) für den Teradata-Connector auf .com. GitHub

Weitere Informationen zu diesem Connector finden Sie auf [der entsprechenden Website unter .com](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-teradata). GitHub

# Amazon Athena Timestream Konnektor
<a name="connectors-timestream"></a>

Der Amazon-Athena-Timestream-Konnektor ermöglicht Amazon Athena die Kommunikation mit [Amazon Timestream](https://aws.amazon.com/timestream/), wodurch auf Ihre Zeitreihendaten über Amazon Athena zugegriffen werden kann. Sie können es optional AWS Glue Data Catalog als Quelle für ergänzende Metadaten verwenden.

Amazon Timestream ist eine schnelle, skalierbare, vollständig verwaltete, speziell entwickelte Zeitreihendatenbank, mit der Sie mühelos Milliarden von Zeitreihendatenpunkten pro Tag speichern und analysieren können. Timestream spart Ihnen Zeit und Kosten bei der Verwaltung des Lebenszyklus von Zeitreihendaten, indem aktuelle Daten im Arbeitsspeicher aufbewahrt und historische Daten basierend auf benutzerdefinierten Richtlinien in eine kostenoptimierte Speicherebene verschoben werden.

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.

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

## Voraussetzungen
<a name="connectors-timestream-prerequisites"></a>
+ Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Für weitere Informationen siehe [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md) oder [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md).

## Parameters
<a name="connectors-timestream-parameters"></a>

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

### Glue Connections (empfohlen)
<a name="connectors-timestream-gc"></a>

Wir empfehlen, dass Sie einen Timestream-Connector mithilfe eines Glue-Connections-Objekts konfigurieren. Setzen Sie dazu die `glue_connection`-Umgebungsvariable des Timestream-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 TIMESTREAM
```

**Lambda-Umgebungseigenschaften**

**glue\$1connection** – Gibt den Namen der Glue-Connection an, die dem Verbund-Connector zugeordnet ist. 

**Anmerkung**  
Alle Konnektoren, die Glue-Verbindungen verwenden, müssen diese AWS Secrets Manager zum Speichern von Anmeldeinformationen verwenden.
Der mit Glue-Connection erstellte Timestream-Connector unterstützt die Verwendung eines Multiplexing-Handlers nicht.
Der mit Glue-Connection erstellte Timestream-Connector unterstützt nur `ConnectionSchemaVersion` 2.

### Legacy-Connections
<a name="connectors-timestream-legacy"></a>

**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-Datenquellenkonnektoren, die ohne eine zugehörige Glue-Connection erstellt wurden. Verwenden Sie die folgenden Parameter nur, wenn Sie eine frühere Version eines Athena-Datenquellenkonnektors [manuell bereitstellen](connect-data-source-serverless-app-repo.md) oder wenn die `glue_connection`-Umgebungseigenschaft nicht angegeben ist.

**Lambda-Umgebungseigenschaften**
+ **spill\$1bucket** – Gibt den Amazon S3-Bucket für Daten an, die die Lambda-Funktionsgrenzen überschreiten.
+ **spill\$1prefix** – (Optional) Ist standardmäßig ein Unterordner im angegebenen `spill_bucket` genannt `athena-federation-spill`. Wir empfehlen Ihnen, einen Amazon-S3-[Speicher-Lebenszyklus](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) an dieser Stelle zu konfigurieren, um die Überlaufe zu löschen, die älter als eine festgelegte Anzahl von Tagen oder Stunden sind.
+ **spill\$1put\$1request\$1headers** – (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 [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)in der *Amazon Simple Storage Service API-Referenz.*
+ **kms\$1key\$1id** – (Optional) Standardmäßig werden alle Daten, die an Amazon S3 gesendet 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, wie`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, können Sie eine ID einer Verschlüsselung angeben.
+ **disable\$1spill\$1encryption** – (Optional) Bei Einstellung auf `True`, wird die Spill-Verschlüsselung deaktiviert. Die Standardeinstellung ist `False`, sodass Daten, die an S3 übertrragen werden, mit AES-GCM verschlüsselt werden - entweder mit einem zufällig generierten Schlüssel oder mit KMS zum Generieren von Schlüsseln. Das Deaktivieren der Überlauf-Verschlüsselung kann die Leistung verbessern, insbesondere wenn Ihr Überlauf-Standort eine [serverseitige Verschlüsselung](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) verwendet.
+ **glue\$1catalog** – (Optional) Verwenden Sie diese Option, um einen [kontoübergreifenden AWS Glue -Katalog](data-sources-glue-cross-account.md) anzugeben. Standardmäßig versucht der Connector, Metadaten von seinem eigenen AWS Glue Konto abzurufen.

## Einrichten von Datenbanken und Tabellen in AWS Glue
<a name="connectors-timestream-setting-up-databases-and-tables-in-aws-glue"></a>

Sie können das optional AWS Glue Data Catalog als Quelle für zusätzliche Metadaten verwenden. Um eine AWS Glue Tabelle für die Verwendung mit Timestream zu aktivieren, benötigen Sie eine AWS Glue Datenbank und eine Tabelle mit Namen, die mit der Timestream-Datenbank und der Tabelle übereinstimmen, für die Sie zusätzliche Metadaten bereitstellen möchten.

**Anmerkung**  
Verwenden Sie für Ihre Datenbanknamen und -tabellen nur Kleinbuchstaben, um eine optimale Leistung zu erzielen. Bei der Verwendung gemischter Groß- und Kleinschreibung führt der Konnektor eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung durch, die rechenintensiver ist.

Um die AWS Glue Tabelle für die Verwendung mit Timestream zu konfigurieren, müssen Sie ihre Tabelleneigenschaften unter festlegen. AWS Glue

**Um eine AWS Glue Tabelle für zusätzliche Metadaten zu verwenden**

1. Bearbeiten Sie die Tabelle in der AWS Glue Konsole, um die folgenden Tabelleneigenschaften hinzuzufügen:
   + **timestream-metadata-flag**— Diese Eigenschaft gibt dem Timestream-Connector an, dass der Connector die Tabelle für zusätzliche Metadaten verwenden kann. Sie können einen beliebigen Wert für `timestream-metadata-flag` angeben, solange die `timestream-metadata-flag`-Eigenschaft in der Liste der Tabelleneigenschaften vorhanden ist.
   + **\$1view\$1template** – Wenn Sie AWS Glue für ergänzende Metadaten verwenden, können Sie diese Tabelleneigenschaft verwenden und eine beliebige Timestream-SQL als Ansicht angeben. Der Athena-Timestream-Konnektor verwendet das SQL aus der Ansicht zusammen mit Ihrem SQL von Athena, um Ihre Abfrage auszuführen. Dies ist nützlich, wenn Sie ein Feature von Timestream SQL verwenden möchten, die sonst in Athena nicht verfügbar ist.

1. Stellen Sie sicher, dass Sie die Datentypen verwenden, die für die in diesem AWS Glue Dokument aufgeführten geeignet sind.

### Datentypen
<a name="connectors-timestream-data-types"></a>

Derzeit unterstützt der Timestream-Konnektor nur eine Teilmenge der in Timestream verfügbaren Datentypen, insbesondere: die Skalarwerte `varchar`, `double` und `timestamp`.

Um den `timeseries`-Datentyp abzufragen, müssen Sie eine Ansicht in AWS Glue -Tabelleneigenschaften konfigurieren, die die `CREATE_TIME_SERIES`-Funktion von Timestream verwenden. Sie müssen auch ein Schema für die Ansicht bereitstellen, das die Syntax `ARRAY<STRUCT<time:timestamp,measure_value::double:double>>` als Typ für eine Ihrer Zeitreihenspalten verwendet. Achten Sie darauf, dass Sie `double` mit dem entsprechenden Skalartyp für Ihre Tabelle ersetzen.

Die folgende Abbildung zeigt ein Beispiel für AWS Glue Tabelleneigenschaften, die konfiguriert wurden, um eine Ansicht über eine Zeitreihe einzurichten.

![\[Konfiguration von Tabelleneigenschaften AWS Glue , um eine Ansicht über eine Zeitreihe einzurichten.\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/images/connectors-timestream-1.png)


## Erforderliche Berechtigungen
<a name="connectors-timestream-required-permissions"></a>

Ausführliche Informationen zu den für diesen Konnektor erforderlichen IAM-Richtlinien finden Sie im `Policies`-Abschnitt der [athena-timestream.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-timestream/athena-timestream.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 Timestream-Konnektor 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.
+ **Timestream Access** – Zum Ausführen von Timestream-Abfragen.

## Leistung
<a name="connectors-timestream-performance"></a>

Wir empfehlen die `LIMIT`-Klausel zu verwenden, um die zurückgegebenen Daten (nicht die gescannten Daten) auf weniger als 256 MB zu begrenzen, um sicherzustellen, dass interaktive Abfragen leistungsfähig sind.

Der Athena-Timestream-Konnektor führt ein Prädikat-Pushdown durch, um die von der Abfrage gescannten Daten zu reduzieren. `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. Die Auswahl einer Teilmenge von Spalten beschleunigt die Abfragelaufzeit erheblich und reduziert die gescannten Daten. Der Timestream-Konnektor ist aufgrund der Gleichzeitigkeit widerstandsfähig gegenüber Drosselung.

## Pass-Through-Abfragen
<a name="connectors-timestream-passthrough-queries"></a>

[Der Timestream-Connector unterstützt Pass-Through-Abfragen.](federated-query-passthrough.md) Pass-Through-Abfragen verwenden eine Tabellenfunktion, um Ihre vollständige Abfrage zur Ausführung an die Datenquelle weiterzuleiten.

Um Pass-Through-Abfragen mit Timestream 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 Timestream 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
<a name="connectors-timestream-license-information"></a>

Das Timestream-Konnektor-Projekt von Amazon Athena ist unter der [Apache-2.0-Lizenz](https://www.apache.org/licenses/LICENSE-2.0.html) lizenziert.

## Weitere Ressourcen
<a name="connectors-timestream-additional-resources"></a>

Weitere Informationen zu diesem Connector finden Sie auf [der entsprechenden Website](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-timestream) auf GitHub .com.

# Amazon Athena TPC Benchmark DS (TPC-DS) Konnektor
<a name="connectors-tpcds"></a>

Der Amazon-Athena-TPC-DS-Konnektor ermöglicht Amazon Athena die Kommunikation mit einer Quelle zufällig erzeugter TPC-Benchmark-DS-Daten für Benchmarking und Funktionstests von Athena Federation. Der Athena-TPC-DS-Konnektor generiert eine TPC-DS-konforme Datenbank mit einem von vier Skalierungsfaktoren. Wir empfehlen die Verwendung dieses Konnektors nicht als Alternative zu Amazon-S3-basierten Data Lake-Leistungstests.

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
<a name="connectors-tpcds-prerequisites"></a>
+ Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Für weitere Informationen siehe [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md) oder [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md).

## Parameters
<a name="connectors-tpcds-parameters"></a>

Verwenden Sie die Parameter in diesem Abschnitt, um den TPC-DS-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](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) abweichen. Verwenden Sie ab dem 3. Dezember 2024 die folgenden Parameter nur, wenn Sie eine frühere Version eines Athena-Datenquellen-Connectors [manuell bereitstellen](connect-data-source-serverless-app-repo.md).

### Glue Connections (empfohlen)
<a name="connectors-tpcds-gc"></a>

Wir empfehlen, dass Sie einen TPC-DS-Connector mithilfe eines Glue-Connections-Objekts konfigurieren. Setzen Sie dazu die `glue_connection`-Umgebungsvariable des TPC-DS-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 TPCDS
```

**Lambda-Umgebungseigenschaften**
+ **glue\$1connection** – Gibt den Namen der Glue-Connection an, die dem Verbund-Connector zugeordnet ist.

**Anmerkung**  
Alle Konnektoren, die Glue-Verbindungen verwenden, müssen diese AWS Secrets Manager zum Speichern von Anmeldeinformationen verwenden.
Der mit Glue-Connection erstellte TPC-DS-Connector unterstützt die Verwendung eines Multiplexing-Handlers nicht.
Der mit Glue-Connection erstellte TPC-DS-Connector unterstützt nur `ConnectionSchemaVersion` 2.

### Legacy-Connections
<a name="connectors-tpcds-legacy"></a>
+ **spill\$1bucket** – Gibt den Amazon S3-Bucket für Daten an, die die Lambda-Funktionsgrenzen überschreiten.
+ **spill\$1prefix** – (Optional) Ist standardmäßig ein Unterordner im angegebenen `spill_bucket` genannt `athena-federation-spill`. Wir empfehlen Ihnen, einen Amazon-S3-[Speicher-Lebenszyklus](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) an dieser Stelle zu konfigurieren, um die Überlaufe zu löschen, die älter als eine festgelegte Anzahl von Tagen oder Stunden sind.
+ **spill\$1put\$1request\$1headers** – (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 [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)in der *Amazon Simple Storage Service API-Referenz.*
+ **kms\$1key\$1id** – (Optional) Standardmäßig werden alle Daten, die an Amazon S3 gesendet 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, wie`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, können Sie eine ID einer Verschlüsselung angeben.
+ **disable\$1spill\$1encryption** – (Optional) Bei Einstellung auf `True`, wird die Spill-Verschlüsselung deaktiviert. Die Standardeinstellung ist `False`, sodass Daten, die an S3 übertrragen werden, mit AES-GCM verschlüsselt werden - entweder mit einem zufällig generierten Schlüssel oder mit KMS zum Generieren von Schlüsseln. Das Deaktivieren der Überlauf-Verschlüsselung kann die Leistung verbessern, insbesondere wenn Ihr Überlauf-Standort eine [serverseitige Verschlüsselung](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) verwendet.

## Testen von Datenbanken und Tabellen
<a name="connectors-tpcds-test-databases-and-tables"></a>

Der Athena TPC-DS-Konnektor generiert eine TPC-DS-konforme Datenbank mit einem der vier Skalierungsfaktoren `tpcds1`, `tpcds10`, `tpcds100`, `tpcds250` oder `tpcds1000`.

### Zusammenfassung der Tabellen
<a name="connectors-tpcds-table-summary"></a>

Eine vollständige Liste der Testdatentabellen und -spalten erhalten Sie, wenn Sie `SHOW TABLES`- oder `DESCRIBE TABLE`-Abfragen ausführen. Die folgende Zusammenfassung der Tabellen dient der Übersichtlichkeit.

1. call\$1center

1. catalog\$1page

1. catalog\$1returns

1. catalog\$1sales

1. customer

1. customer\$1address

1. customer\$1demographics

1. date\$1dim

1. dbgen\$1version

1. household\$1demographics

1. income\$1band

1. -Bestand

1. item

1. promotion

1. Grund

1. ship\$1mode

1. Store

1. store\$1returns

1. store\$1sales

1. time\$1dim

1. warehouse

1. web\$1page

1. web\$1returns

1. web\$1sales

1. Web\$1site

Informationen zu TPC-DS-Abfragen, die mit diesem generierten Schema und den generierten Daten kompatibel sind, finden Sie im Verzeichnis [athena-tpcds/src/main/resources/queries/](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-tpcds/src/main/resources/queries)unter. GitHub

### Beispielabfrage
<a name="connectors-tpcds-example-query"></a>

Die folgenden `SELECT`-Abfragebeispiele fragen den `tpcds`-Katalog für demografische Kundendaten in bestimmten Landkreisen ab.

```
SELECT
  cd_gender,
  cd_marital_status,
  cd_education_status,
  count(*) cnt1,
  cd_purchase_estimate,
  count(*) cnt2,
  cd_credit_rating,
  count(*) cnt3,
  cd_dep_count,
  count(*) cnt4,
  cd_dep_employed_count,
  count(*) cnt5,
  cd_dep_college_count,
  count(*) cnt6
FROM
  "lambda:tpcds".tpcds1.customer c, "lambda:tpcds".tpcds1.customer_address ca, "lambda:tpcds".tpcds1.customer_demographics
WHERE
  c.c_current_addr_sk = ca.ca_address_sk AND
    ca_county IN ('Rush County', 'Toole County', 'Jefferson County',
                  'Dona Ana County', 'La Porte County') AND
    cd_demo_sk = c.c_current_cdemo_sk AND
    exists(SELECT *
           FROM "lambda:tpcds".tpcds1.store_sales, "lambda:tpcds".tpcds1.date_dim
           WHERE c.c_customer_sk = ss_customer_sk AND
             ss_sold_date_sk = d_date_sk AND
             d_year = 2002 AND
             d_moy BETWEEN 1 AND 1 + 3) AND
    (exists(SELECT *
            FROM "lambda:tpcds".tpcds1.web_sales, "lambda:tpcds".tpcds1.date_dim
            WHERE c.c_customer_sk = ws_bill_customer_sk AND
              ws_sold_date_sk = d_date_sk AND
              d_year = 2002 AND
              d_moy BETWEEN 1 AND 1 + 3) OR
      exists(SELECT *
             FROM "lambda:tpcds".tpcds1.catalog_sales, "lambda:tpcds".tpcds1.date_dim
             WHERE c.c_customer_sk = cs_ship_customer_sk AND
               cs_sold_date_sk = d_date_sk AND
               d_year = 2002 AND
               d_moy BETWEEN 1 AND 1 + 3))
GROUP BY cd_gender,
  cd_marital_status,
  cd_education_status,
  cd_purchase_estimate,
  cd_credit_rating,
  cd_dep_count,
  cd_dep_employed_count,
  cd_dep_college_count
ORDER BY cd_gender,
  cd_marital_status,
  cd_education_status,
  cd_purchase_estimate,
  cd_credit_rating,
  cd_dep_count,
  cd_dep_employed_count,
  cd_dep_college_count
LIMIT 100
```

## Erforderliche Berechtigungen
<a name="connectors-tpcds-required-permissions"></a>

Ausführliche Informationen zu den für diesen Konnektor erforderlichen IAM-Richtlinien finden Sie im `Policies`-Abschnitt der [athena-tpcds.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-tpcds/athena-tpcds.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.

## Leistung
<a name="connectors-tpcds-performance"></a>

Der Athena-TPC-DS-Konnektor versucht, Abfragen basierend auf dem von Ihnen gewählten Skalierungsfaktor zu parallelisieren. Der Prädikat-Pushdown wird innerhalb der Lambda-Funktion ausgeführt.

## Lizenzinformationen
<a name="connectors-tpcds-license-information"></a>

Das TPC-DS-Konnektor-Projekt von Amazon Athena ist unter der [Apache-2.0-Lizenz](https://www.apache.org/licenses/LICENSE-2.0.html) lizenziert.

## Weitere Ressourcen
<a name="connectors-tpcds-additional-resources"></a>

Weitere Informationen zu diesem Connector finden Sie auf [der entsprechenden Website](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-tpcds) unter .com. GitHub

# Amazon Athena Vertica Konnektor
<a name="connectors-vertica"></a>

Vertica ist eine spaltenbasierte Datenbankplattform, die in der Cloud oder On-Premises bereitgestellt werden kann, die Data Warehouses im Exabyte-Maßstab unterstützt. Sie können den Amazon-Athena-Vertica-Konnektor in Verbundabfragen verwenden, um Vertica-Datenquellen von Athena abzufragen. Sie können beispielsweise analytische Abfragen über ein Data Warehouse in Vertica und einen Data Lake in Amazon S3 ausführen.

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

## Voraussetzungen
<a name="connectors-vertica-prerequisites"></a>
+ Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Für weitere Informationen siehe [Eine Datenquellenverbindung erstellen](connect-to-a-data-source.md) oder [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md).
+ Richten Sie eine VPC und eine Sicherheitsgruppe ein, bevor Sie diesen Konnektor verwenden. Weitere Informationen finden Sie unter [Erstellen Sie eine VPC für einen Datenquellenconnector oder AWS Glue eine Datenquellenverbindung](athena-connectors-vpc-creation.md).

## Einschränkungen
<a name="connectors-vertica-limitations"></a>
+ Da der Athena Vertica-Konnektor exportierte Parquet-Dateien aus Amazon S3 liest, kann die Leistung des Konnektors langsam sein. Wenn Sie große Tabellen abfragen, empfehlen wir, dass Sie eine [CREATE TABLE AS (SELECT ...)](ctas.md)-Abfrage und SQL-Prädikate verwenden.
+ Aufgrund eines bekannten Problems in Athena Federated Query veranlasst der Konnektor derzeit, dass Vertica alle Spalten der abgefragten Tabelle nach Amazon S3 exportiert, aber nur die abgefragten Spalten sind in den Ergebnissen auf der Athena-Konsole sichtbar.
+ Schreiboperationen wie DDL werden nicht unterstützt.
+ Alle relevanten Lambda-Grenzwerte. Weitere Informationen finden Sie unter [Lambda quotas (Lambda-Kontingente)](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) im *AWS Lambda -Entwicklerhandbuch.*

## Workflow
<a name="connectors-vertica-workflow"></a>

Das folgende Diagramm zeigt den Arbeitsablauf einer Abfrage, die den Vertica-Konnektor verwendet.

![\[Arbeitsablauf einer Vertica-Abfrage von Amazon Athena\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/images/connectors-vertica-1.png)


1. Eine SQL-Abfrage wird für eine oder mehrere Tabellen in Vertica ausgegeben.

1. Der Konnektor analysiert die SQL-Abfrage, um den entsprechenden Teil über die JDBC-Verbindung an Vertica zu senden.

1. Die Verbindungszeichenfolgen verwenden den Benutzernamen und das Passwort, die AWS Secrets Manager für den Zugriff auf Vertica gespeichert sind.

1. Der Konnektor umschließt die SQL-Abfrage mit einem Vertica-`EXPORT`-Befehl, wie im folgenden Beispiel.

   ```
   EXPORT TO PARQUET (directory = 's3://amzn-s3-demo-bucket/folder_name, 
      Compression='Snappy', fileSizeMB=64) OVER() as 
   SELECT
   PATH_ID,
   ...
   SOURCE_ITEMIZED,
   SOURCE_OVERRIDE
   FROM DELETED_OBJECT_SCHEMA.FORM_USAGE_DATA
   WHERE PATH_ID <= 5;
   ```

1. Vertica verarbeitet die SQL-Abfrage und sendet die Ergebnismenge an einen Amazon-S3-Bucket. Für einen besseren Durchsatz verwendet Vertica die `EXPORT`-Option, um den Schreibvorgang mehrerer Parquet-Dateien zu parallelisieren.

1. Athena durchsucht den Amazon-S3-Bucket, um die Anzahl der Dateien zu ermitteln, die für die Ergebnismenge gelesen werden sollen.

1. Athena ruft die Lambda-Funktion mehrfach auf und verwendet einen Apache `ArrowReader`, um die Parquet-Dateien aus dem resultierenden Datensatz zu lesen. Durch mehrere Aufrufe kann Athena das Lesen der Amazon-S3-Dateien parallelisieren und einen Durchsatz von bis zu 100 GB pro Sekunde erreichen.

1. Athena verarbeitet die von Vertica zurückgegebenen Daten mit aus dem Data Lake gescannten Daten und gibt das Ergebnis zurück.

## Bedingungen
<a name="connectors-vertica-terms"></a>

Die folgenden Begriffe beziehen sich auf den Vertica-Konnektor.
+ **Datenbank-Instance** – Jede Instance einer Vertica-Datenbank, die auf Amazon EC2 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.

## Parameters
<a name="connectors-vertica-parameters"></a>

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

### Glue Connections (empfohlen)
<a name="connectors-vertica-gc"></a>

Wir empfehlen, dass Sie einen Vertica-Connector mithilfe eines Glue-Connections-Objekts konfigurieren. Setzen Sie dazu die `glue_connection`-Umgebungsvariable des Vertica-Server-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 VERTICA
```

**Lambda-Umgebungseigenschaften**
+ **glue\$1connection** – Gibt den Namen der Glue-Connection an, die dem Verbund-Connector zugeordnet ist. 
+ **casing\$1mode** – (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-Verbindungen verwenden, müssen diese AWS Secrets Manager zum Speichern von Anmeldeinformationen verwenden.
Der mit Glue-Connection erstellte Vertica-Connector unterstützt die Verwendung eines Multiplexing-Handlers nicht.
Der mit Glue-Connection erstellte Vertica-Connector unterstützt nur `ConnectionSchemaVersion` 2.

### Legacy-Connections
<a name="connectors-vertica-legacy"></a>

Der Amazon Athena Vertica Konnektor stellt Konfigurationsoptionen über Lambda-Umgebungsvariablen zur Verfügung. Sie können die folgenden Lambda-Umgebungsvariablen verwenden, um den Konnektor zu konfigurieren. 
+  **AthenaCatalogName**— Name der Lambda-Funktion 
+  **ExportBucket**— Der Amazon S3 S3-Bucket, in den die Vertica-Abfrageergebnisse exportiert werden. 
+  **SpillBucket**— Der Name des Amazon S3 S3-Buckets, in den diese Funktion Daten übertragen kann. 
+  **SpillPrefix**— Das Präfix für den `SpillBucket` Ort, an dem diese Funktion Daten verschicken kann. 
+  **SecurityGroupIds**— Eine oder mehrere IDs , die der Sicherheitsgruppe entsprechen, die auf die Lambda-Funktion angewendet werden soll (z. B., `sg1``sg2`, oder`sg3`). 
+  **SubnetIds**— Ein oder mehrere Subnetze IDs , die dem Subnetz entsprechen, das die Lambda-Funktion für den Zugriff auf Ihre Datenquelle verwenden kann (z. B.`subnet1`, oder). `subnet2` 
+  **SecretNameOrPrefix**— Der Name oder das Präfix einer Reihe von Namen in Secrets Manager, auf die diese Funktion Zugriff hat (zum Beispiel`vertica-*`) 
+  **VerticaConnectionString**— Die Vertica-Verbindungsdetails, die standardmäßig verwendet werden sollen, wenn keine katalogspezifische Verbindung definiert ist. Die Zeichenfolge kann optional AWS Secrets Manager Syntax verwenden (z. B.`${secret_name}`). 
+  **VPC ID** – Die VPC-ID, die an die Lambda-Funktion angehängt werden soll. 

#### Verbindungszeichenfolge
<a name="connectors-vertica-connection-string"></a>

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

```
vertica://jdbc:vertica://host_name:
                        port/database?user=vertica-username&password=
                        vertica-password
```

#### Verwenden eines einzelnen Verbindungs-Handlers
<a name="connectors-vertica-using-a-single-connection-handler"></a>

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


****  

| Handler-Typ | Klasse | 
| --- | --- | 
| Composite Handler | VerticaCompositeHandler | 
| Metadaten-Handler | VerticaMetadataHandler | 
| Record Handler | VerticaRecordHandler | 

#### Parameter für Einzelverbindungs-Handler
<a name="connectors-vertica-single-connection-handler-parameters"></a>


****  

| Parameter | Description | 
| --- | --- | 
| 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.

#### Bereitstellen von Anmeldeinformationen
<a name="connectors-vertica-providing-credentials"></a>

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 hartcodierten Geheimnissen nach AWS Secrets Manager finden Sie AWS Secrets Manager im *AWS Secrets Manager Benutzerhandbuch* unter [Verschieben von hartcodierten Geheimnissen nach](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html).
+ **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](https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/) oder einen [VPC-Endpunkt verfügen, um eine Verbindung zu Secrets](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html) Manager herzustellen.

  Sie können den Namen eines Geheimnisses in AWS Secrets Manager Ihre 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, eine Rotation der Anmeldeinformationen zu verwenden AWS Secrets Manager . Wenn Ihre Datenbank Amazon RDS nicht verwendet, speichern Sie die Anmeldeinformationen als JSON im folgenden Format:

  ```
  {"username": "${username}", "password": "${password}"}
  ```

**Beispiel für eine Verbindungszeichenfolge mit geheimen Namen**  
Die folgende Zeichenfolge hat die geheimen Namen \$1\$1`vertica-username`\$1 und `${vertica-password}`. 

```
vertica://jdbc:vertica://
                        host_name:port/database?user=${vertica-username}&password=${vertica-password}
```

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

```
vertica://jdbc:vertica://
                        host_name:port/database?user=sample-user&password=sample-password
```

Derzeit erkennt der Vertica-Konnektor die `vertica-username`- und `vertica-password`-JDBC-Eigenschaften. 

#### Überlauf-Parameter
<a name="connectors-vertica-spill-parameters"></a>

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 | Description | 
| --- | --- | 
| spill\$1bucket | Erforderlich Überlauf-Bucket-Name. | 
| spill\$1prefix | Erforderlich Schlüssel-Prefix für den Überlauf-Bucket. | 
| spill\$1put\$1request\$1headers | (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. \$1"x-amz-server-side-encryption" : "AES256"\$1). Weitere mögliche Header finden Sie [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)in der Amazon Simple Storage Service API-Referenz. | 

## Datentypunterstützung
<a name="connectors-vertica-data-type-support"></a>

In der folgenden Tabelle sind die unterstützten Datentypen für den Vertica-Konnektor aufgeführt.


****  

| Boolesch | 
| --- | 
| BigInt | 
| Short | 
| Ganzzahl | 
| Long | 
| Gleitkommazahl | 
| Double | 
| Date | 
| Varchar | 
| Bytes | 
| BigDecimal | 
| TimeStamp als Varchar | 

## Leistung
<a name="connectors-vertica-performance"></a>

Die Lambda-Funktion führt Projektions-Pushdown durch, um die von der Abfrage gescannten Daten zu reduzieren. `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 Vertica-Konnektor ist aufgrund der Gleichzeitigkeit widerstandsfähig gegenüber Drosselung.

## Pass-Through-Abfragen
<a name="connectors-vertica-passthrough-queries"></a>

Der Vertica-Connector unterstützt [Pass-Through-Abfragen.](federated-query-passthrough.md) Pass-Through-Abfragen verwenden eine Tabellenfunktion, um Ihre vollständige Abfrage zur Ausführung an die Datenquelle weiterzuleiten.

Um Pass-Through-Abfragen mit Vertica 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 Vertica 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
<a name="connectors-vertica-license-information"></a>

Durch die Verwendung dieses Connectors erkennen Sie die Einbeziehung von Komponenten von Drittanbietern an. Eine Liste dieser Komponenten finden Sie in der Datei [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-vertica/pom.xml) für diesen Connector, und Sie stimmen den Bedingungen der jeweiligen Drittanbieterlizenzen zu, die in der Datei [LICENSE.txt](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-vertica/LICENSE.txt) auf GitHub .com enthalten sind.

## Weitere Ressourcen
<a name="connectors-vertica-additional-resources"></a>

Die neuesten Informationen zur JDBC-Treiberversion finden Sie in der Datei [pom.xml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-vertica/pom.xml) für den Vertica-Connector auf .com. GitHub

*Weitere Informationen zu diesem Connector finden Sie auf [der entsprechenden Website](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-vertica) auf GitHub .com und [Abfragen einer Vertica-Datenquelle in Amazon Athena mit dem Athena Federated Query SDK](https://aws.amazon.com/blogs/big-data/querying-a-vertica-data-source-in-amazon-athena-using-the-athena-federated-query-sdk/) im Big Data Blog.AWS *

# Eine Datenquellenverbindung erstellen
<a name="connect-to-a-data-source"></a>

Um einen Athena-Datenquellenconnector zu verwenden, erstellen Sie die AWS Glue Verbindung, die die Verbindungsinformationen über den Konnektor und Ihre Datenquelle speichert. Wenn Sie die Verbindung herstellen, geben Sie der Datenquelle einen Namen, mit dem Sie in Ihren SQL-Abfragen auf Ihre Datenquelle verweisen.

Sie können eine Datenquellenverbindung in Athena mithilfe der [Konsole](connect-to-a-data-source-console-steps.md) oder der [CreateDataCatalogAPI-Operationen](https://docs.aws.amazon.com/athena/latest/APIReference/API_CreateDataCatalog.html) erstellen und konfigurieren.

**Topics**
+ [Berechtigungen zum Erstellen und Verwenden einer Datenquelle in Athena](connect-to-a-data-source-permissions.md)
+ [Mit der Athena-Konsole eine Verbindung mit einer Datenquelle herstellen](connect-to-a-data-source-console-steps.md)
+ [Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen](connect-data-source-serverless-app-repo.md)
+ [Erstellen Sie eine VPC für einen Datenquellenconnector oder AWS Glue eine Datenquellenverbindung](athena-connectors-vpc-creation.md)
+ [Ziehen Sie ECR-Bilder auf Ihr Konto AWS](pull-ecr-customer-account.md)
+ [Ihre Verbindung als Glue-Datenkatalog registrieren](register-connection-as-gdc.md)
+ [Aktivieren von kontoübergreifenden Verbundabfragen](xacct-fed-query-enable.md)
+ [Datenquellen-Konnektor aktualisieren](connectors-updating.md)

# Berechtigungen zum Erstellen und Verwenden einer Datenquelle in Athena
<a name="connect-to-a-data-source-permissions"></a>

Um eine Datenquelle zu erstellen und zu verwenden, benötigen Sie die folgenden Berechtigungssätze.
+ AmazonAthenaFullAccess das bietet vollen Zugriff auf Amazon Athena und bereichsspezifischen Zugriff auf die Abhängigkeiten, die für das Abfragen, Schreiben von Ergebnissen und Datenmanagement erforderlich sind. Weitere Informationen finden Sie [AmazonAthenaFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAthenaFullAccess.html)im AWS Managed Policy Reference Guide.
+ Berechtigungen zum Aufrufen der CreateDataCatalog API. Diese Berechtigungen sind nur erforderlich, wenn Sie eine Datenquelle erstellen, die in Glue-Verbindungen integriert ist. Weitere Informationen über die Beispielrichtlinie finden Sie in [Berechtigungen erforderlich zum Erstellen des Connectors und des Athena-Katalogs](athena-catalog-access.md).
+ Wenn Sie die differenzierte Zugriffskontrolle von Lake Formation verwenden möchten, benötigen Sie zusätzlich zu den oben aufgeführten Berechtigungen auch die folgenden Berechtigungen.

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "lakeformation:RegisterResource",
          "iam:ListRoles",
          "glue:CreateCatalog",
          "glue:GetCatalogs",
          "glue:GetCatalog"
        ],
        "Resource": "*"
      }
    ]
  }
  ```

------

# Mit der Athena-Konsole eine Verbindung mit einer Datenquelle herstellen
<a name="connect-to-a-data-source-console-steps"></a>

Sie können die Athena-Konsole verwenden, um eine Datenquellenverbindung zu erstellen und zu konfigurieren.

**So erstellen Sie eine Verbindung zu einer Datenquelle**

1. Öffnen Sie die Athena-Konsole unter [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Wenn der Navigationsbereich in der Konsole nicht sichtbar ist, wählen Sie das Erweiterungsmenü auf der linken Seite.  
![\[Wählen Sie das Erweiterungsmenü aus.\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/images/nav-pane-expansion.png)

1. Wählen Sie im Navigationsbereich **Datenquellen und Kataloge** aus.

1. Wählen Sie auf der Seite **Datenquellen und Kataloge** die Option **Datenquellen erstellen** aus.

1. Wählen Sie für **Auswahl einer Datenquelle** unter Berücksichtigung der folgenden Richtlinien die Datenquelle aus, die Athena abfragen soll:
   + Wählen Sie eine Verbindungsoption aus, die Ihrer Datenquelle entspricht. Athena hat Datenquellen-Connectors vorentwickelt, die Sie für Quellen wie MySQL, Amazon DocumentDB und PostgreSQL konfigurieren können.
   + Wählen Sie **S3 – AWS Glue Data Catalog**, wenn Sie Daten in Amazon S3 abfragen möchten und keinen Apache-Hive-Metastore oder eine der anderen Verbundabfrage-Datenquellenoptionen auf dieser Seite verwenden. Athena benutzt den AWS Glue Data Catalog , um Metadaten und Schemainformationen für Datenquellen in Amazon S3 zu speichern. Dies ist die Standardoption (nicht verbunden). Weitere Informationen finden Sie unter [Verwenden Sie AWS Glue Data Catalog , um eine Verbindung zu Ihren Daten herzustellen](data-sources-glue.md). Schritte zur Verwendung dieses Workflows finden Sie unter [Datenkataloge in Athena registrieren und verwenden](gdc-register.md).
   + Wählen Sie **S3 – Apache-Hive-Metastore**, um Datensätze in Amazon S3 abzufragen, die einen Apache-Hive-Metastore verwenden. Weitere Informationen zu dieser Option finden Sie unter [Verbinden Sie Athena zu einem Apache Hive-Metastore](connect-to-data-source-hive-connecting-athena-to-an-apache-hive-metastore.md).
   + Wählen Sie **Benutzerdefinierter oder freigegebener Connector**, wenn Sie Ihren eigenen Datenquellen-Connector für die Verwendung mit Athena erstellen möchten. Hinweise zum Schreiben eines Datenquellen-Connectors finden Sie unter [Entwickeln eines Datenquellen-Konnektors mithilfe des Athena Query Federation SDK](connect-data-source-federation-sdk.md).

1. Wählen Sie **Weiter** aus.

1. Auf der Seite **Datenquellendetails eingeben** für **Datenquellenname** verwenden Sie den automatisch generierten Namen oder geben Sie einen eindeutigen Namen ein, den Sie in Ihren SQL-Anweisungen verwenden möchten, wenn Sie die Datenquelle aus Athena abfragen. Der Name kann bis zu 127 Zeichen lang sein und muss innerhalb Ihres Kontos eindeutig sein. Er kann nicht mehr geändert werden, nachdem Sie ihn erstellt haben. Gültige Zeichen sind a-z, A-Z, 0-9, \$1 (Unterstrich), @ (At-Zeichen) und - (Bindestrich). Die Namen `awsdatacatalog`, `hive`, `jmx` und `system` sind von Athena reserviert und können nicht für Datenquellennamen verwendet werden. 

1. Wenn die von Ihnen gewählte Datenquelle in AWS Glue Verbindungen integriert wird.

   1. Geben Sie für **AWS Glue -Verbindungsdetails** die erforderlichen Informationen ein. Eine Verbindung enthält die Eigenschaften, die für das Verbinden mit einer bestimmten Datenquelle erforderlich sind. Die erforderlichen Eigenschaften variieren je nach Verbindungstyp. Weitere Informationen zu den Eigenschaften Ihres Connectors finden Sie unter [Verfügbare Datenquellenkonnektoren](connectors-available.md). Informationen zu zusätzlichen Verbindungseigenschaften finden Sie unter [AWS Glue -Verbindungseigenschaften](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) im *AWS Glue -Benutzerhandbuch*.
**Anmerkung**  
Wenn Sie die Glue–Connection-Eigenschaften aktualisieren, muss der Lambda-Connector neu gestartet werden, um die aktualisierten Eigenschaften zu erhalten. Bearbeiten Sie dazu die Umgebungseigenschaften und speichern Sie sie, ohne tatsächlich etwas zu ändern. 
Wenn Sie eine Glue-Connection aktualisieren, werden die folgenden Eigenschaften nicht automatisch in der entsprechenden Lambda-Funktion aktualisiert. Sie müssen Ihre Lambda-Funktion für diese Eigenschaften manuell aktualisieren.  
Lambda-VPC-Konfiguration – `security_group_ids`, `subnet_ids`
Lambda-Ausführungsrolle – `spill_bucket`, `secret_name`, `spill_kms_key_id`

   1. Wählen Sie in **Lambda-IAM-Ausführungsrolle** eine der folgenden Optionen aus:
      + **Eine neue Ausführungsrolle erstellen und verwenden** — (Standard) Athena erstellt eine Ausführungsrolle, mit der sie dann in Ihrem Namen AWS Lambda auf Ressourcen zugreift. Athena benötigt diese Rolle, um Ihre Verbund-Datenquelle zu erstellen.
      + **Vorhandene Ausführungsrolle verwenden** – Verwenden Sie diese Option um eine vorhandene Ausführungsrolle auszuwählen. Wählen Sie für diese Option in der Dropdownliste **Ausführungsrolle** aus, die Sie verwenden möchten.

1. Wenn die von Ihnen gewählte Datenquelle nicht in AWS Glue Verbindungen integriert wird. 

   1. Für **Lambda-Funktion**, wählen Sie **Erstellen einer Lambda-Funktion** aus. Die Funktionsseite für den ausgewählten Connector wird in der AWS Lambda Konsole geöffnet. Die Seite enthält detaillierte Informationen zum Connector.

   1. Lesen Sie unter **Anwendungseinstellungen** die Beschreibung für jede Anwendungseinstellung sorgfältig durch und geben Sie dann Werte ein, die Ihren Anforderungen entsprechen.

      Die angezeigten Anwendungseinstellungen variieren je nach Connector für die Datenquelle. Folgende Mindesteinstellungen sind erforderlich:
      + **AthenaCatalogName**— Ein Name in Kleinbuchstaben für die Lambda-Funktion, der die Datenquelle angibt, auf die sie abzielt, z. B. `cloudwatchlogs`
      + **SpillBucket**— Ein Amazon S3 S3-Bucket in Ihrem Konto zum Speichern von Daten, die die Größenbeschränkungen der Lambda-Funktion für die Antwortgröße überschreiten.
**Anmerkung**  
Verschüttete Daten werden in nachfolgenden Ausführungen nicht wiederverwendet und können sicher gelöscht werden. Athena löscht diese Daten nicht für Sie. Um diese Objekte zu verwalten, sollten Sie eine Richtlinie zum Objektlebenszyklus hinzufügen, die alte Daten aus Ihrem Amazon-S3-Spill-Bucket löscht. Weitere Informationen finden Sie unter [Verwaltung des Speicherlebenszyklus](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) im Amazon-S3-Benutzerhandbuch.

   1. Wählen Sie **Ich bestätige, dass diese App benutzerdefinierte IAM-Rollen und Ressourcenrichtlinien erstellt**. Um weitere Informationen zu erhalten, wählen Sie den Link **Info** .

   1. Wählen Sie **Bereitstellen**. Wenn die Bereitstellung abgeschlossen ist, erscheint die Lambda-Funktion im Abschnitt **Ressourcen** in der Lambda-Konsole.

      Nachdem Sie den Datenquellen-Connector für Ihr Konto bereitgestellt haben, können Sie Athena mit ihm verbinden.

   1. Kehren Sie zur Seite **Datenquellendetails eingeben** der Athena-Konsole zurück.

   1. Im Abschnitt **Verbindungsdetails** wählen Sie das Aktualisierungssymbol neben dem Suchfeld **Suchen oder eine Lambda-Funktion eingeben**.

   1. Wählen Sie den Namen der Funktion aus, die Sie gerade in der Lambda-Konsole erstellt haben. Der ARN der Lambda-Funktion wird angezeigt.

1. (Optional) Fügen Sie für **Tags** Schlüssel-Wert-Paare hinzu, die mit dieser Datenquelle verknüpft werden sollen. Weitere Informationen zu Tags erhalten Sie unter [Athena-Ressourcen markieren](tags.md).

1. Wählen Sie **Weiter** aus.

1. Prüfen Sie auf der Seite **Überprüfen und erstellen** die Details der Datenquelle. Um Änderungen vorzunehmen, wählen Sie **Bearbeiten**. 

1. Lesen der Informationen in **Athena wird Ressourcen in Ihrem Konto erstellen**. Wenn Sie damit einverstanden sind, wählen Sie **Ich bestätige, dass Athena in meinem Namen Ressourcen erstellen wird**.

1. Klicken Sie auf **Create data source**. **Athena ** wird die folgenden Ressourcen für Sie erstellen.
   + Lambda-IAM-Ausführungsrolle
   + AWS Glue Verbindung (nur wenn die Datenquelle mit AWS Glue Connections kompatibel ist)
   + Lambda-Funktion

Der Abschnitt **Datenquellendetails** auf der Seite für Ihre Datenquelle zeigt Informationen über Ihren neuen Connector an. Sie können den Connector jetzt in Ihren Athena-Abfragen verwenden. 

Informationen zur Verwendung von Datenkonnektoren in Abfragen finden Sie unter [Verbundabfragen ausführen](running-federated-queries.md).

# Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen
<a name="connect-data-source-serverless-app-repo"></a>

Um einen Datenquellen-Connector bereitzustellen, können Sie [AWS Serverless Application Repository](https://aws.amazon.com/serverless/serverlessrepo/) anstatt einer AWS Glue -Verbindung verwenden.

**Anmerkung**  
Wir empfehlen, den SAR nur zu verwenden, wenn Sie über einen benutzerdefinierten Connector verfügen oder die Verwendung eines älteren Connectors benötigen. Andernfalls wird die Verwendung der Athena-Konsole empfohlen. 

Sie können den verwenden AWS Serverless Application Repository , um den Connector zu finden, den Sie verwenden möchten, die Parameter bereitzustellen, die der Connector benötigt, und dann den Connector für Ihr Konto bereitstellen. Nachdem Sie den Connector bereitgestellt haben, verwenden Sie die Athena-Konsole, um die Datenquelle für Athena verfügbar zu machen.

## Bereitstellen des Connectors für Ihr Konto
<a name="connect-data-source-serverless-app-repo-deploying"></a>

**Um den zu verwenden AWS Serverless Application Repository , um einen Datenquellen-Connector für Ihr Konto bereitzustellen**

1. Melden Sie sich beim **Serverless App Repository** an AWS-Managementkonsole und öffnen Sie es.

1. Wählen Sie im Navigationsbereich **Available applications (Verfügbare Anwendungen)** aus.

1. Wählen Sie die Option **Apps anzeigen, die benutzerdefinierte IAM-Rollen oder Ressourcenrichtlinien erstellen**.

1. Geben Sie im Suchfeld den Namen des Connectors ein. Die Liste vorab erstellter Athena-Daten-Connector finden Sie unter [Verfügbare Datenquellenkonnektoren](connectors-available.md).

1. Wählen Sie den Namen des Connectors aus. Wenn Sie einen Connector auswählen, wird die Seite **Anwendungsdetails** der Lambda-Funktion in der AWS Lambda -Konsole geöffnet.

1. Geben Sie auf der rechten Seite der Detailseite für **Application settings** (Anwendungseinstellungen) die erforderlichen Informationen ein. Zu den mindestens erforderlichen Einstellungen gehören die folgenden. Informationen zu den verbleibenden konfigurierbaren Optionen für von Athena erstellte Datenkonnektoren finden Sie im entsprechenden Thema [Verfügbare Konnektoren](https://github.com/awslabs/aws-athena-query-federation/wiki/Available-Connectors) unter GitHub.
   + **AthenaCatalogName**— Ein Name für die Lambda-Funktion in Kleinbuchstaben, der die Datenquelle angibt, auf die sie abzielt, z. B. `cloudwatchlogs`
   + **SpillBucket**— Geben Sie in Ihrem Konto einen Amazon S3 S3-Bucket an, um Daten von großen Antwortnutzlasten zu empfangen, die die Limits der Lambda-Funktionsantwortgröße überschreiten.

1. Wählen Sie **Ich bestätige, dass diese App benutzerdefinierte IAM-Rollen und Ressourcenrichtlinien erstellt**. Um weitere Informationen zu erhalten, wählen Sie den Link **Info** .

1. Wählen Sie unten rechts im Abschnitt **Anwendungseinstellungen** **Bereitstellen**. Wenn die Bereitstellung abgeschlossen ist, erscheint die Lambda-Funktion im Abschnitt **Ressourcen** in der Lambda-Konsole.

## Den Connector in Athena verfügbar machen
<a name="connect-data-source-serverless-app-repo-making-the-connector-available-in-athena"></a>

Nun sind Sie bereit, die Athena-Konsole zu verwenden, um die Datenquelle für Athena verfügbar zu machen.

**Um die Datenquelle für Athena verfügbar zu machen**

1. Öffnen Sie die Athena-Konsole unter [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Wenn der Navigationsbereich in der Konsole nicht sichtbar ist, wählen Sie das Erweiterungsmenü auf der linken Seite.  
![\[Wählen Sie das Erweiterungsmenü aus.\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/images/nav-pane-expansion.png)

1. Wählen Sie im Navigationsbereich **Datenquellen und Kataloge** aus.

1. Wählen Sie auf der Seite **Datenquellen und Kataloge** die Option **Datenquellen erstellen** aus.

1. Für **Auswählen einer Datenquelle** wählen Sie die Datenquelle aus, für die Sie einen Connector in AWS Serverless Application Repository erstellt haben. In diesem Tutorial wird **Amazon CloudWatch Logs** als föderierte Datenquelle verwendet.

1. Wählen Sie **Weiter** aus.

1. Geben Sie auf der Seite **Datenquellendetails eingeben** für **Datenquellenname** den Namen ein, den Sie in Ihren SQL-Anweisungen verwenden möchten, wenn Sie die Datenquelle von Athena abfragen (z. B `CloudWatchLogs`). Der Name kann bis zu 127 Zeichen lang sein und muss innerhalb Ihres Kontos eindeutig sein. Er kann nicht mehr geändert werden, nachdem Sie ihn erstellt haben. Gültige Zeichen sind a-z, A-Z, 0-9, \$1 (Unterstrich), @ (At-Zeichen) und - (Bindestrich). Die Namen `awsdatacatalog`, `hive`, `jmx` und `system` sind von Athena reserviert und können nicht für Datenquellennamen verwendet werden. 

1. Im Abschnitt **Verbindungsdetails** verwenden Sie das Feld **Auswählen oder Eingeben einer Lambda-Funktion**, um den Namenn der Funktion, die Sie soeben erstellt haben, auszuwählen. Der ARN der Lambda-Funktion wird angezeigt.

1. (Optional) Fügen Sie für **Tags** Schlüssel-Wert-Paare hinzu, die mit dieser Datenquelle verknüpft werden sollen. Weitere Informationen zu Tags erhalten Sie unter [Athena-Ressourcen markieren](tags.md).

1. Wählen Sie **Weiter** aus.

1. Auf der Seite **Überprüfen und erstellen** prüfen Sie die Datenquellendetails und wählen Sie dann **Datenquelle erstellen** aus. 

1. Der Abschnitt **Datenquellendetails** auf der Seite für Ihre Datenquelle zeigt Informationen über Ihren neuen Connector an. Sie können den Connector jetzt in Ihren Athena-Abfragen verwenden. 

   Informationen zur Verwendung von Datenkonnektoren in Abfragen finden Sie unter [Verbundabfragen ausführen](running-federated-queries.md).

# Erstellen Sie eine VPC für einen Datenquellenconnector oder AWS Glue eine Datenquellenverbindung
<a name="athena-connectors-vpc-creation"></a>

Für einige Athena-Datenquellenconnectors und AWS Glue -verbindungen sind eine VPC und eine Sicherheitsgruppe erforderlich. In diesem Thema wird gezeigt, wie Sie eine VPC mit einem Subnetz und einer Sicherheitsgruppe für die VPC erstellen. Im Rahmen dieses Vorgangs rufen Sie die IDs für die VPC, das Subnetz und die Sicherheitsgruppe ab, die Sie erstellen. Diese IDs sind erforderlich, wenn Sie Ihre AWS Glue Verbindung oder Ihren Datenquellenconnector für die Verwendung mit Athena konfigurieren.

**So erstellen Sie eine VPC für einen Athena-Datenquellen-Connector**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die Amazon VPC-Konsole unter [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/).

1. Wählen Sie **VPC erstellen** aus.

1. Auf der **VPC erstellen** Seite, unter **VPC-Einstellungen**, für **Zu erstellende Ressourcen**, wählen Sie **VPC und mehr**.

1. Geben Sie unter **Automatische Generierung von Namensbezeichner** für **Automatisch generieren** einen Wert ein, der zur Generierung von Namensbezeichner für alle Ressourcen in Ihrer VPC verwendet wird.

1. Wählen Sie **VPC erstellen** aus.

1. Wenn der Vorgang abgeschlossen ist, wählen Sie **VPC ansehen**.

1. Kopieren Sie im Abschnitt **Details** für **VPC ID** Ihre VPC-ID zur späteren Referenz.

Jetzt können Sie die Subnetz-ID für die VPC abrufen, die Sie gerade erstellt haben.

**So rufen Sie Ihre VPC-Subnetz-ID ab**

1. Wählen Sie im Navigationsbereich der VPC-Konsole **Subnets** (Subnetze).

1. Wählen Sie den Namen eines Subnetzes aus, dessen **VPC**-Spalte die VPC-ID enthält, die Sie notiert haben.

1. Kopieren Sie im Abschnitt **Details** für **Subnet ID** Ihre Subnetz-ID zur späteren Referenz.

Erstellen Sie als nächstes eine VPC-Sicherheitsgruppe für Ihre VPC.

**So erstellen Sie eine Sicherheitsgruppe für Ihre VPC**

1. Wählen Sie im Navigationsbereich der VPC-Konsole **Security** (Sicherheit), **Security Groups** (Sicherheitsgruppen).

1. Wählen Sie **Create security group** (Sicherheitsgruppe erstellen).

1. Geben Sie auf der Seite **Create security group** (Sicherheitsgruppe erstellen) die folgenden Informationen ein:
   + Geben Sie für **Security group name** (Sicherheitsgruppen-Name) einen Namen für Ihre Sicherheitsgruppe ein.
   + Geben Sie für **Description** (Beschreibung) eine Beschreibung für die Sicherheitsgruppe. Eine Beschreibung ist erforderlich.
   + Für **VPC** wählen Sie die VPC-ID der VPC, die Sie für Ihren Datenquellen-Connector erstellt haben.
   + Fügen Sie für **Inbound rules** (eingehende Regeln) und **Outbound rules** (ausgehende Regeln) alle erforderlichen Regeln für ein- und ausgehenden Datenverkehr hinzu.

1. Wählen Sie **Sicherheitsgruppe erstellen** aus.

1. Kopieren Sie auf der Seite **Details** für die Sicherheitsgruppe die **Security group ID** (Sicherheitsgruppen-ID) zur späteren Referenz.

## Wichtige Überlegungen zur Verwendung von VPC mit Athena-Konnektoren
<a name="vpc-warning-instructions"></a>

Die folgenden Anweisungen gelten für alle Athena-Connectoren, da alle Connectoren VPC verwenden können.

**Anmerkung**  
Wenn Sie eine VPC mit AWS Glue-Verbindungen verwenden, müssen Sie die folgenden PrivateLink Endpunkte einrichten:  
Amazon S3
AWS Glue
AWS Secrets Manager

Alternativ können Sie öffentlichen Internetzugang nutzen, obwohl dies aus Sicherheitsgründen nicht empfohlen wird.

**Warnung**  
Die Nutzung eines öffentlichen Internetzugangs kann Ihre Ressourcen zusätzlichen Sicherheitsrisiken aussetzen. Es wird dringend empfohlen, PrivateLink Endpunkte zu verwenden, um die Sicherheit in Ihrer VPC-Konfiguration zu erhöhen.

# Ziehen Sie ECR-Bilder auf Ihr Konto AWS
<a name="pull-ecr-customer-account"></a>

Die Lambda-Funktionen des Athena-Verbundkonnektors verwenden Container-Bilder, die in von Athena verwalteten Amazon-ECR-Repositorys gespeichert sind. Um Sicherheitsscans an diesen Container-Bilder durchzuführen, müssen Sie sie zunächst in ein Amazon ECR-Repository in Ihrem Konto kopieren. Dieser Abschnitt enthält step-by-step Anweisungen zum Kopieren eines Images in Ihr Repository und zum Konfigurieren Ihrer Lambda-Funktion für die Verwendung des Images.

## Voraussetzungen
<a name="pull-ecr-customer-account-prereq"></a>
+ Ein Athena Verbundkonnektor – Der Konnektor kann über eine beliebige Quelle erstellt werden, sofern er ein Container-Bild verwendet.
**Anmerkung**  
Um die Bild-Bereitstellung zu überprüfen, überprüfen Sie die Registerkarte Bild in Ihrem Athena Verbundkonnektor Lambda
+ Docker ist installiert und läuft
+ AWS CLI installiert
+ Kontoanmeldeinformationen mit entsprechenden Pull-Berechtigungen

## So leiten Sie ein Bild weiter
<a name="image-transfer-procedure"></a>

1. Suchen Sie den Image-URI von Ihrem Athena Verbundkonnektor Lambda  
**Example**  

   ```
   account_id_1.dkr.ecr.us-east-1.amazonaws.com/athena-federation-repository:2025.15.1
   ```

1. Generieren Sie ein Docker-Authentifizierungstoken für das von Athena verwaltete Konto:

   ```
   aws ecr get-login-password --region regionID | docker login --username AWS --password-stdin athena-managed-registry
   ```

   Wobei Folgendes gilt:
   + *regionID*ist Ihre Einsatzregion (z. B. us-east-1)
   + *athena-managed-registry*ist der Registry-Teil der Image-URI (z. B. account\$1id\$11.dkr. ecr.us-east-1.amazonaws.com)

1. Rufen Sie das Image aus dem Athena-Verwaltungskonto ab:

   ```
   docker pull athenaImageURI
   ```

1. Docker für Ihre Registry authentifizieren:

   ```
   aws ecr get-login-password --region regionID | docker login --username AWS --password-stdin customer-registry
   ```

   Wo *customer-registry* ist Ihre ECR-Registrierung (z. B. account\$1id\$12.dkr. ecr.us-east-1.amazonaws.com)

1. Kennzeichnen Sie das heruntergeladene Bild für Ihr Repository:

   ```
   docker tag athenaImageURI yourImageURI
   ```

1. Verschieben Sie das Image in Ihr Repository:

   ```
   docker push yourImageURI
   ```

1. Aktualisieren Sie Ihren Athena-Verbundkonnektor:

   1. Navigieren Sie zu Ihrer Lambda-Funktion

   1. Wählen Sie **Neues Bild bereitstellen** aus

   1. Geben Sie Ihre neue Bild-URI ein

   Das Athena-Verbundkonnektor-Bild befindet sich jetzt in Ihrem Konto, sodass Sie CVE-Scans auf dem Bild durchführen können.

# Ihre Verbindung als Glue-Datenkatalog registrieren
<a name="register-connection-as-gdc"></a>

Nachdem Sie Ihre Datenquelle erstellt haben, können Sie die Athena-Konsole verwenden, um Ihre Verbindung als Glue-Datenkatalog zu registrieren. Nach der Registrierung können Sie Ihren Verbunddatenkatalog verwalten und mithilfe von Lake Formation eine detaillierte Zugriffskontrolle aktivieren. Weitere Informationen finden Sie unter [Einen Verbundkatalog erstellen](https://docs.aws.amazon.com/lake-formation/latest/dg/create-fed-catalog-data-source.html).

Sie können die folgenden Konnektoren registrieren, um sie für eine differenzierte Zugriffskontrolle zu integrieren. AWS Glue 
+ Redshift
+ BigQuery
+ DynamoDB (Vorschau)
+ Snowflake (Vorschau)
+ MySQL
+ PostgreSQL
+ AWS CMDB
+ Timestream
+ Azure Data Lake Storage
+ Azure Synapse
+ IBM Db2
+ IBM Db2 AS/400 (Db2 iSeries)
+ DocumentDB
+ Google Cloud Storage
+ HBase
+ OpenSearch
+ Oracle
+ SAP HANA
+ SQL Server
+ TPC-DS
+ Cloudera Hive
+ CloudWatch
+ Cloudwatch-Metriken
+ Teradata
+ Vertica

## Voraussetzungen
<a name="register-connection-as-gdc-pre"></a>

Bevor Sie beginnen, müssen Sie die folgenden Voraussetzungen erfüllen.
+ Stellen Sie sicher, dass Sie über die erforderlichen Rollen und Berechtigungen verfügen, um Standorte zu registrieren. Weitere Informationen finden Sie in den [Anforderungen für Rollen](https://docs.aws.amazon.com/lake-formation/latest/dg/registration-role.html) im AWS Lake Formation Entwicklerhandbuch.
+ Stellen Sie sicher, dass Sie über die erforderlichen Rollen bei Lake Formation verfügen. Weitere Informationen finden Sie im AWS Lake Formation Entwicklerhandbuch unter [Voraussetzungen für die Verbindung des Datenkatalogs mit externen Datenquellen](https://docs.aws.amazon.com/lake-formation/latest/dg/federated-catalog-data-connection.html).
+ Die Rolle, die Sie in Glue registrieren, muss über die im folgenden Beispiel aufgeführten Berechtigungen verfügen.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "s3:ListBucket",
                  "s3:GetObject"
              ],
              "Resource": [
      "arn:aws:s3:::amzn-s3-demo-bucket/spill-prefix/*",
      "arn:aws:s3:::amzn-s3-demo-bucket/spill-prefix"
              ]
          },
          {
              "Sid": "lambdainvoke",
              "Effect": "Allow",
              "Action": "lambda:InvokeFunction",
              "Resource": "arn:aws:lambda:us-east-1:111122223333:function:lambda_function_name"
          },
          {
              "Sid": "gluepolicy",
              "Effect": "Allow",
              "Action": "glue:*",
              "Resource": [
              "arn:aws:glue:us-east-1:111122223333:connection/<connection_name>",
      "arn:aws:glue:us-east-1:111122223333:catalog"
              ]
          }
      ]
  }
  ```

------
+ Sie sind dafür verantwortlich, den entsprechenden Datenzugriff festzulegen und zu verwalten. Bei detaillierten Zugriffskontrollen für Verbundabfragen wird empfohlen, die [AmazonAthenaFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAthenaFullAccess.html)verwaltete Richtlinie zu verwenden. Wenn Sie Ihre eigene Richtlinie verwenden möchten, müssen Sie sicherstellen, dass die Benutzer, die Verbundabfragen ausführen, keinen Zugriff auf die folgenden Ressourcen haben.
  + `lambda:InvokeFunction` auf dem Lambda-Connector, der in Glue-Connection angegeben ist
  + Zugriff auf den Standort des Spill-Buckets in IAM
  + Zugriff auf die mit Ihrem Verbundkatalog verknüpfte Glue-Connection
  + Lake-Formation-Rolle in IAM

## Ihre Verbindung über die Konsole registrieren
<a name="register-connection-as-gdc-steps"></a>

**Um Ihre Verbindung als Glue-Datenkatalog zu registrieren**

1. Öffnen Sie die Athena-Konsole unter [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Wählen Sie im Navigationsbereich **Datenquellen und Kataloge** aus.

1. Wählen Sie aus der Liste **Datenquellen** die Datenquelle aus, die Sie erstellt haben, um die Seite mit den **Datenquellendetails** zu öffnen. 

1. Wählen Sie **Erste Schritte mit**. AWS Lake Formation
**Anmerkung**  
Nachdem Sie diese Option ausgewählen, müssen Sie Ihre Lambda-Funktion selbst verwalten. Athena-Funktion wird Ihre Lambda-Funktion nicht löschen.

1. Geben Sie unter **Name des Datenkatalogs** einen eindeutigen Namen für Ihren Katalog ein.

1. Wählen Sie die **IAM-Rolle Lake Formation** aus, die Lake Formation die Berechtigung erteilt, die Lambda-Funktion aufzurufen. Stellen Sie sicher, dass die Rolle über die [im Beispiel](#register-connection-as-gdc-pre) gezeigten Berechtigungen verfügt.

1. Geben Sie in das Textfeld **bestätigen** ein, um die Athena-Datenquelle zu löschen und durch eine Glue-Datenkatalogregistrierung zu ersetzen.
**Anmerkung**  
Diese Aktion löscht Ihre Athena-Datenquelle und erstellt an ihrer Stelle einen neuen Glue-Datenkatalog. Nachdem dieser Vorgang abgeschlossen ist, müssen Sie möglicherweise Abfragen aktualisieren, die auf die Datenquelle zugreifen, sodass sie stattdessen auf den neu erstellten Glue-Datenkatalog verweisen.

1. Wählen Sie **Katalog erstellen und zu Lake Formation gehen**. Dadurch wird die Lake-Formation-Konsole geöffnet, in der Sie den Katalog verwalten und Benutzern Berechtigungen für Kataloge, Datenbanken und Tabellen gewähren können.

# Aktivieren von kontoübergreifenden Verbundabfragen
<a name="xacct-fed-query-enable"></a>

Verbundabfrage ermöglicht es Ihnen, andere Datenquellen als Amazon S3 mithilfe von Datenquellen-Connectors abzufragen, die auf AWS Lambda bereitgestellt sind. Das kontoübergreifende Verbundabfragefeature ermöglicht es, dass sich die Lambda-Funktion und die abzufragenden Datenquellen in verschiedenen Konten befinden.

**Anmerkung**  
Verwenden Sie diese Methode nur, wenn Sie Ihre Verbunddatenquelle nicht bei AWS Glue Data Catalog registriert haben. Wenn Sie Ihre Datenquelle bei der registriert haben AWS Glue Data Catalog, verwenden Sie das AWS Glue Data Catalog kontoübergreifende Funktionen- und Berechtigungsmodell. Weitere Informationen finden Sie unter [KGewährung von kontoübergreifendem Zugriff](https://docs.aws.amazon.com/glue/latest/dg/cross-account-access.html) im *AWS Glue -Benutzerhandbuch*.

Als Datenadministrator können Sie kontoübergreifende Verbundabfragen aktivieren, indem Sie Ihren Daten-Connector mit dem Konto eines Datenanalysten freigeben oder als Datenanalyst einen freigegebenen Lambda-ARN von einem Datenadministrator verwenden, um es Ihrem Konto hinzuzufügen. Wenn Konfigurationsänderungen an einem Connector im Ursprungskonto vorgenommen werden, wird die aktualisierte Konfiguration automatisch auf die freigegebenen Instances des Connectors in den Konten anderer Benutzer angewendet.

## Überlegungen und Einschränkungen
<a name="xacct-fed-query-enable-considerations-and-limitations"></a>
+ Das kontoübergreifende Verbundabfragefeature ist für Nicht-Hive-Metastore-Daten-Connectors verfügbar, die eine Lambda-basierte Datenquelle verwenden.
+ Die Funktion ist für den AWS Glue Data Catalog Datenquellentyp nicht verfügbar. Hinweise zum kontenübergreifenden Zugriff auf AWS Glue Data Catalog s finden Sie unter[Kontenübergreifenden Zugriff auf AWS Glue Datenkataloge konfigurieren](security-iam-cross-account-glue-catalog-access.md).
+ Wenn die Antwort der Lambda-Funktion Ihres Konnektors die Beschränkung der Lambda-Antwortgröße von 6 MB überschreitet, verschlüsselt Athena die Antwort automatisch, stapelt sie und spillt sie an einen von Ihnen konfigurierten Amazon-S3-Bucket weiter. Die Entität, die die Athena-Abfrage ausführt, muss Zugriff auf den Spill-Standort haben, damit Athena die übergebenen Daten lesen kann. Wir empfehlen, dass Sie eine Amazon-S3-Lebenszyklusrichtlinie einrichten, um Objekte vom Spill-Speicherort zu löschen, da die Daten nach Abschluss der Abfrage nicht benötigt werden. 
+ Die Verwendung von Verbundabfragen in Across AWS-Regionen wird nicht unterstützt. 

## Erforderliche Berechtigungen
<a name="xacct-fed-query-enable-required-permissions"></a>

Um die erforderlichen Berechtigungen einzurichten, müssen Maßnahmen sowohl für Konto A (*444455556666*) als auch für Konto B (*111122223333*) ergriffen werden.

### Aktionen für Konto A
<a name="xacct-fed-query-enable-required-permissions-account-a"></a>

Damit das Datenadministratorkonto A eine Lambda-Funktion mit dem Datenanalystenkonto B teilen kann, erfordert Konto B die Lambda-Aufruffunktion und den Spill-Bucket-Zugriff. Dementsprechend sollte Konto A der Lambda-Funktion und dem [Prinzipal](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-policy-language-overview.html) Zugriff auf seinen Spill-Bucket in Amazon S3 eine [ressourcenbasierte Richtlinie](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html) hinzufügen.

1. Die folgende Richtlinie erteilt Lambda-Funktionsberechtigungen für Konto B für eine Lambda-Funktion in Konto A aufzurufen.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "CrossAccountInvocationStatement",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::111122223333:user/username"
                   ]
               },
               "Action": "lambda:InvokeFunction",
               "Resource": "arn:aws:lambda:us-east-1:444455556666:function:lambda-function-name"
           }
       ]
   }
   ```

------

1. Die folgende Richtlinie ermöglicht den Spill-Bucket-Zugriff auf den Prinzipal in Konto B.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
               "AWS": ["arn:aws:iam::111122223333:user/username"]
               },
               "Action": [
                   "s3:GetObject",
                   "s3:ListBucket"
                ],
               "Resource": [
                   "arn:aws:s3:::spill-bucket",
                   "arn:aws:s3:::spill-bucket/*"
               ]
           }
        ]
    }
   ```

------

1. Wenn die Lambda-Funktion den Spill-Bucket mit einem AWS KMS Schlüssel anstelle der vom Federation SDK angebotenen Standardverschlüsselung verschlüsselt, muss die AWS KMS Schlüsselrichtlinie in Konto A dem Benutzer in Konto B Zugriff gewähren, wie im folgenden Beispiel.

   ```
   { 
       "Sid": "Allow use of the key", 
       "Effect": "Allow", 
       "Principal": 
       { 
          "AWS": ["arn:aws:iam::account-B-id:user/username"] 
       }, 
       "Action": [ "kms:Decrypt" ], 
       "Resource": "*" // Resource policy that gets placed on the KMS key. 
    }
   ```

### Aktionen für Konto B
<a name="xacct-fed-query-enable-required-permissions-account-b"></a>

Damit Konto A seinen Connector mit Konto B teilen kann, muss Konto B eine Rolle mit dem Namen erstellen, `AthenaCrossAccountCreate-account-A-id` die Konto A übernimmt, indem es die API-Aktion AWS Security Token Service [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)aufruft.

1. Verwenden Sie die IAM-Konsole oder die AWS CLI , um die `AthenaCrossAccountCreate-account-A-id` Rolle als benutzerdefinierte Vertrauensrichtlinien-Rolle zu erstellen. Eine benutzerdefinierte Vertrauensrichtlinie delegiert den Zugriff und ermöglicht es anderen, Aktionen in Ihrem AWS Konto durchzuführen. Eine Anleitung dazu finden Sie unter [Erstellen einer Rolle mithilfe benutzerdefinierter Vertrauensrichtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) im *IAM-Benutzerhandbuch*.

   Die Vertrauensbeziehung sollte ein Hauptobjekt haben, bei dem der Schlüssel `AWS` und der Wert die ARN von Konto A ist, wie im folgenden Beispiel.

   ```
   ...
   "Principal": 
   { 
      "AWS": ["arn:aws:iam::account-A-id:user/username"]
   }, 
   ...
   ```

1. Erstellen Sie auch in Konto B eine Richtlinie wie die folgende, die die `CreateDataCatalog`-Aktion ermöglicht. 

   ```
   {
    "Effect": "Allow",
    "Action": "athena:CreateDataCatalog",
    "Resource": "arn:aws:athena:*:account-B-id:datacatalog/*"
   }
   ```

1. Fügen Sie die Richtlinie, die die `CreateDataCatalog`-Aktion zulässt, der `AthenaCrossAccountCreate-account-A-id`-Rolle hinzu, die Sie mit Konto B erstellt haben. 

## Freigeben einer Datenquelle in Konto A mit Konto B
<a name="xacct-fed-query-enable-sharing-a-lambda-data-source-in-account-a-with-account-b"></a>

Nachdem Berechtigungen vorhanden sind, können Sie die Seite **Datenquellen und Kataloge** Seite in der Athena-Konsole verwenden, um einen Daten-Connector in Ihrem Konto (Konto A) mit einem anderen Konto (Konto B) zu teilen. Konto A behält die volle Kontrolle und den Besitz des Connectors. Wenn Konto A Konfigurationsänderungen am Connector vornimmt, gilt die aktualisierte Konfiguration für den freigegebenen Connector in Konto B.

**Anmerkung**  
Sie können nur eine Datenquelle vom Typ Lambda freigeben und keine Datenquellen, die AWS Glue -Verbindungen verwenden. Weitere Informationen finden Sie unter [Verfügbare Datenquellenkonnektoren](connectors-available.md).

**So teilen Sie eine Lambda-Datenquelle in Konto A mit Konto B**

1. Öffnen Sie die Athena-Konsole unter [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Wenn der Navigationsbereich in der Konsole nicht sichtbar ist, wählen Sie das Erweiterungsmenü auf der linken Seite.  
![\[Wählen Sie das Erweiterungsmenü aus.\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/images/nav-pane-expansion.png)

1. Wählen Sie **Datenquellen und Kataloge** aus.

1. Wählen Sie auf der Seite **Datenquellen und Kataloge** den Link des Connectors aus, den Sie freigeben möchten.

1. Auf der Detailseite für eine Lambda-Datenquelle, aus dem **Aktionen**-Menü in der oberen rechten Ecke, wählen Sie **Freigeben**.

1. Im Bereich „***Lambda-name*Mit einem anderen Konto teilen“?** Geben Sie im Dialogfeld die erforderlichen Informationen ein.
   + Geben Sie für **Data source name** (Datenquellenname) den Namen der kopierten Datenquelle ein, wie er im anderen Konto angezeigt werden soll.
   + Geben Sie bei **Konto-ID** die ID des Kontos ein, mit dem Sie Ihre Datenquelle teilen möchten (in diesem Fall Konto B).

1. Wählen Sie **Freigeben**. Der von Ihnen angegebene Connector für freigegebene Daten wird in Konto B erstellt. Konfigurationsänderungen am Connector in Konto A gelten für den Connector in Konto B.

## Hinzufügen einer freigegebenen Datenquelle aus Konto A zu Konto B
<a name="xacct-fed-query-enable-add-a-shared-lambda-function-arn-to-your-account"></a>

Als Datenanalyst erhalten Sie möglicherweise den ARN eines Connectors, den Sie von einem Datenadministrator zu Ihrem Konto hinzufügen können. Sie können die Seite **Datenquellen und Kataloge** der Athena-Konsole verwenden, um den von Ihrem Administrator bereitgestellten Lambda-ARN zu Ihrem Konto hinzuzufügen.

**So fügen Sie den Lambda-ARN eines freigegebenen Daten-Connectors zu Ihrem Konto hinzu**

1. Öffnen Sie die Athena-Konsole unter [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Wenn der Navigationsbereich nicht sichtbar ist, wählen Sie das Erweiterungsmenü auf der linken Seite.

1. Wählen Sie **Datenquellen und Kataloge** aus.

1. Wählen Sie auf der Seite **Datenquellen und Kataloge** die Option **Datenquellen erstellen** aus.

1. Auf der Seite **Eine Datenquelle auswählen**, wählen Sie **Benutzerdefinierter oder freigegebener Connector**.

1. Wählen Sie **Weiter** aus.

1. Auf der Seite **Datenquellendetails eingeben**, im Abschnitt **Verbindungsdetails** geben Sie für **Lambda-Funktion auswählen oder eingeben**, den Lambda-ARN von Konto A ein.

1. Wählen Sie **Weiter** aus.

1. Wählen Sie auf der Seite **Überprüfen und erstellen** die Option **Datenquelle erstellen** aus.

## Fehlerbehebung
<a name="xacct-fed-query-enable-troubleshooting"></a>

Wenn Sie eine Fehlermeldung erhalten, dass Konto A nicht über die Berechtigung verfügt, eine Rolle in Konto B zu übernehmen, stellen Sie sicher, dass der Name der in Konto B erstellten Rolle korrekt geschrieben ist und dass die richtige Richtlinie angehängt ist.

# Datenquellen-Konnektor aktualisieren
<a name="connectors-updating"></a>

Athena empfiehlt, die von Ihnen verwendeten Datenquellen-Konnektoren regelmäßig auf die neueste Version zu aktualisieren, um von neuen Features und Verbesserungen zu profitieren. Die Aktualisierung eines Datenquellen-Konnektors umfasst die folgenden Schritte:

# Glue Connections (empfohlen)
<a name="connectors-updating-gc"></a>

## Die neueste Version von Athena-Verbundabfrage finden
<a name="connectors-updating-finding-the-latest-version"></a>

Die neueste Versionsnummer der Athena-Datenquellen-Konnektors entspricht der neuesten Version von Athena-Verbundabfrage. In bestimmten Fällen können die GitHub Versionen etwas neuer sein als die, die auf der AWS Serverless Application Repository (SAR) verfügbar sind.

**Die neueste Versionsnummer von Athena-Verbundabfrage finden**

1. Besuchen Sie die GitHub URL [https://github.com/awslabs/aws-athena-query-federation/releases/latest](https://github.com/awslabs/aws-athena-query-federation/releases/latest).

1. Notieren Sie sich die Versionsnummer in der Überschrift der Hauptseite im folgenden Format:

   ***year*Version** v. *week\$1of\$1year*. *iteration\$1of\$1week***von Athena Query Federation**

   Die Versionsnummer für **Version 2023.8.3 von Athena-Verbundabfrage** lautet beispielsweise 2023.8.3.

## Ihre Connector-Version finden
<a name="connectors-find-version"></a>

Gehen Sie wie folgt vor, um festzustellen, welche Version Ihres Connectors Sie gerade verwenden.

**Um Ihre Connector-Version zu finden**

1. Wählen Sie auf der Lambda-Konsolenseite für Ihre Lambda-Anwendung die Registerkarte **Bild** aus.

1. Suchen Sie auf der Registerkarte Bild nach der Bild-URI. Die URI hat folgendes Format:

   ```
   Image_location_account.dkr.ecr.us-west-2.amazonaws.com/athena-federation-repository:Version
   ```

1. Die Versionsnummer in der Bild-URI hat das Format `year.week_of_year.iteration_of_week` (z. B. `2021.42.1`). Diese Nummer steht für Ihre Connector-Version.

## Bereitstellen einer neuen Connector-Version
<a name="connectors-deploy-new-version"></a>

Gehen Sie wie folgt vor, um eine neue Version Ihres Konnektors bereitzustellen.

**Wie Sie die neue Connector-Version bereitstellen**

1. Finden Sie die gewünschte Version, indem Sie die Anweisungen befolgen, um die neueste Version von Athena-Verbundabfrage zu finden.

1. Suchen Sie in der Lambda-Funktion des Verbundconnectors die ImageURI und aktualisieren Sie das Tag auf die gewünschte Version. Beispiel:

   From:

   ```
   509399631660.dkr.ecr.us-east-1.amazonaws.com/athena-federation-repository:2025.15.1
   ```

   auf:

   ```
   509399631660.dkr.ecr.us-east-1.amazonaws.com/athena-federation-repository:2025.26.1
   ```

**Anmerkung**  
Wenn Ihre aktuelle Version älter als 2025.15.1 ist, beachten Sie diese wichtigen Änderungen:  
Der Repository-Name wurde aktualisiert auf `athena-federation-repository`
Für Versionen vor diesem Update ist die Befehlsüberschreibung möglicherweise nicht gesetzt. Sie müssen sie auf den Composite-Handler setzen.

# Legacy-Connections
<a name="connectors-updating-legacy"></a>

## Die neueste Version von Athena-Verbundabfrage finden
<a name="connectors-updating-finding-the-latest-version"></a>

Die neueste Versionsnummer der Athena-Datenquellen-Konnektors entspricht der neuesten Version von Athena-Verbundabfrage. In bestimmten Fällen können die GitHub Versionen etwas neuer sein als die, die auf der AWS Serverless Application Repository (SAR) verfügbar sind.

**Die neueste Versionsnummer von Athena-Verbundabfrage finden**

1. Besuchen Sie die GitHub URL [https://github.com/awslabs/aws-athena-query-federation/releases/latest](https://github.com/awslabs/aws-athena-query-federation/releases/latest).

1. Notieren Sie sich die Versionsnummer in der Überschrift der Hauptseite im folgenden Format:

   ***year*Version** v. *week\$1of\$1year*. *iteration\$1of\$1week***von Athena Query Federation**

   Die Versionsnummer für **Version 2023.8.3 von Athena-Verbundabfrage** lautet beispielsweise 2023.8.3.

## Ressourcennamen suchen und notieren
<a name="connectors-updating-finding-and-noting-resource-names"></a>

Zur Vorbereitung des Upgrades müssen Sie die folgenden Informationen finden und sich diese notieren:

1. Der Lambda-Funktionsname für den Konnektor.

1. Umgebungsvariablen für die Lambda-Funktion.

1. Der Name der Lambda-Anwendung, die die Lambda-Funktion für den Konnektor verwaltet.

**Wie Sie Ressourcennamen von der Athena-Konsole aus suchen**

1. Öffnen Sie die Athena-Konsole unter [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Wenn der Navigationsbereich in der Konsole nicht sichtbar ist, wählen Sie das Erweiterungsmenü auf der linken Seite.  
![\[Wählen Sie das Erweiterungsmenü aus.\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/images/nav-pane-expansion.png)

1. Wählen Sie im Navigationsbereich **Datenquellen und Kataloge** aus.

1. Wählen Sie in der Spalte **Datenquellenname** den Link zur Datenquelle für Ihren Konnektor aus.

1. Wählen Sie im Abschnitt **Datenquellendetails** unter **Lambda-Funktion** den Link zu Ihrer Lambda-Funktion aus.  
![\[Wählen Sie den Link zu Ihrer Lambda-Funktion aus.\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/images/connectors-updating-1.png)

1. Notieren Sie sich auf der Seite **Funktionen** in der Spalte **Funktionsname** den Funktionsnamen für Ihren Konnektor.  
![\[Notieren Sie sich den Funktionsnamen.\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/images/connectors-updating-2.png)

1. Wählen Sie den Link mit dem Funktionsnamen.

1. Wählen Sie im Abschnitt **Funktionsübersicht** die Registerkarte **Konfiguration** aus.

1. Wählen Sie im Bereich auf der linken Seite **Umgebungsvariablen** aus.

1. Notieren Sie sich im Abschnitt **Umgebungsvariablen** die Schlüssel und ihre entsprechenden Werte.

1. Scrollen Sie zum Seitenanfang.

1. In der Nachricht **Diese Funktion gehört zu einer Anwendung. Klicken Sie hier, um sie zu verwalten**, und wählen Sie den Link **Hier klicken**.

1. **Notieren Sie sich auf der **serverlessrepo- *your\$1application\$1name*** Seite den Namen Ihrer Anwendung ohne serverlessrepo.** Wenn der Anwendungsname beispielsweise **serverlessrepo** - lautet, dann lautet Ihr Anwendungsname. DynamoDbTestApp **DynamoDbTestApp**

1. Bleiben Sie auf der Lambda-Konsolenseite für Ihre Anwendung und fahren Sie dann mit den Schritten unter **Suchen der Version des Konnektors fort, den Sie verwenden**.

## Finden Sie die Version des Connectors, den Sie verwenden
<a name="connectors-updating-finding-the-version-that-you-are-using"></a>

Gehen Sie folgendermaßen vor, um die Version des von Ihnen verwendeten Konnektors zu ermitteln.

**Wie Sie die Version des Konnektors, den Sie verwenden, suchen**

1. Wählen Sie auf der Konsolenseite für Ihre Lambda-Anwendung die Registerkarte **Bereitstellungen** aus.

1. Erweitern Sie auf der Registerkarte **Bereitstellungen** **SAM-Vorlage**.

1. Suchen Sie nach **CodeUri**.

1. Suchen Sie im Feld **Schlüssel** darunter nach der **CodeUri**folgenden Zeichenfolge:

   ```
   applications-connector_name-versions-year.week_of_year.iteration_of_week/hash_number
   ```

   Das folgende Beispiel zeigt eine Zeichenfolge für den CloudWatch Konnektor:

   ```
   applications-AthenaCloudwatchConnector-versions-2021.42.1/15151159...
   ```

1. Notieren Sie den Wert für*year*. *week\$1of\$1year*. *iteration\$1of\$1week*(zum Beispiel **2021.42.1**). Dies ist die Version für Ihren Konnektor.

## Die neue Version Ihres Konnektors bereitstellen
<a name="connectors-updating-deploying-the-new-version"></a>

Gehen Sie wie folgt vor, um eine neue Version Ihres Konnektors bereitzustellen.

**Wie Sie die neue Version Ihres Konnektors bereitstellen**

1. Öffnen Sie die Athena-Konsole unter [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Wenn der Navigationsbereich in der Konsole nicht sichtbar ist, wählen Sie das Erweiterungsmenü auf der linken Seite.  
![\[Wählen Sie das Erweiterungsmenü aus.\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/images/nav-pane-expansion.png)

1. Wählen Sie im Navigationsbereich **Datenquellen und Kataloge** aus.

1. Wählen Sie auf der Seite **Datenquellen und Kataloge** die Option **Datenquellen erstellen** aus.

1. Wählen Sie die Datenquelle aus, für die Sie ein Upgrade durchführen möchten, und wählen Sie dann **Weiter** aus.

1. Wählen Sie auf der Seite **Verbindungsdetails** die Option **Neue Lambda-Funktion erstellen** aus. Dadurch wird die Lambda-Konsole geöffnet, in der Sie Ihre aktualisierte Anwendung bereitstellen können.  
![\[Connector-Seite in der Konsole. AWS Lambda\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/images/connectors-updating-3.png)

1. Da Sie keine neue Datenquelle erstellen, können Sie die Registerkarte Athena-Konsole schließen.

1. Führen Sie Lambda-Konsolenseite für den Konnektor die folgenden Schritte aus:

   1. Stellen Sie sicher, dass Sie das Präfix **serverlessrepo-** aus Ihrem Anwendungsnamen entfernt haben, und kopieren Sie dann den Anwendungsnamen in das Feld **Anwendungsname**.

   1. Kopieren Sie den Namen Ihrer Lambda-Funktion in das **AthenaCatalogName**Feld. Einige Konnektoren rufen dieses Feld auf **LambdaFunctionName**.

   1. Kopieren Sie die Umgebungsvariablen, die Sie aufgezeichnet haben, in die entsprechenden Felder.

1. Wählen Sie **Ich bestätige, dass diese Anwendung benutzerdefinierte IAM-Rollen und Ressourcenrichtlinien erstellt** und dann **Bereitstellen**.

1. Um zu überprüfen, ob Ihre Anwendung aktualisiert wurde, wählen Sie die Registerkarte **Bereitstellungen.**

   Im Abschnitt **Bereitstellungsverlauf** wird angezeigt, dass Ihr Update abgeschlossen ist.  
![\[Konnektor-Update abgeschlossen.\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/images/connectors-updating-4.png)

1. Um die neue Versionsnummer zu bestätigen, können Sie die **SAM-Vorlage** wie zuvor erweitern und die Versionsnummer des Connectors im Feld **Schlüssel** suchen **CodeUri**und überprüfen.

Sie können jetzt Ihren aktualisierten Konnektor verwenden, um Athena-Verbundabfragen zu erstellen.

# Eine Datenquellenverbindung bearbeiten oder löschen
<a name="connectors-edit-data-source"></a>

Sie können die Athena-Konsole verwenden, um die Beschreibung, den Host, den Port, die Datenbank und andere Eigenschaften für eine bestehende Verbindung zu aktualisieren. Sie können auch die Datenquellen aus der Athena-Konsole löschen.

## Eine Datenquellenverbindung bearbeiten
<a name="connectors-edit-data-source-editsteps"></a>

**Um eine Datenquellenverbindung zu bearbeiten**

1. Öffnen Sie die Athena-Konsole unter [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Wenn der Navigationsbereich in der Konsole nicht sichtbar ist, wählen Sie das Erweiterungsmenü auf der linken Seite.  
![\[Wählen Sie das Erweiterungsmenü aus.\]](http://docs.aws.amazon.com/de_de/athena/latest/ug/images/nav-pane-expansion.png)

1. Wählen Sie im Navigationsbereich **Datenquellen und Kataloge** aus.

1. Wählen Sie auf der Seite **Datenquellen und Kataloge** die Datenquellenverbindung aus, die Sie bearbeiten möchten.

1. Für **AWS Glue Verbindungsdetails**, wählen Sie **Bearbeiten**.

1. Wählen Sie **Weiter** aus.

1. Aktualisieren Sie auf der Seite **<connection-name> Bearbeiten** die Informationen nach Bedarf. Die verfügbaren Eigenschaften hängen vom Verbindungstyp ab.
**Anmerkung**  
Wenn Sie Verbindungseigenschaften für Geheimnisse, Überlaufspeicherort oder AWS KMS -Schlüssel-ID aktualisieren, stellen Sie sicher, dass die Lambda-Ausführungsrolle weiterhin Zugriff auf die aktualisierten Ressourcen hat. Weitere Informationen finden Sie unter [Berechtigungen für die Ausführungsrolle anzeigen und aktualisieren](https://docs.aws.amazon.com/lambda/latest/dg/permissions-executionrole-update.html) im AWS Lambda -Entwicklerhandbuch.
   + **Beschreibung** – Bearbeiten Sie die Beschreibung für Ihre Verbindung.
   + **Host** – Bearbeiten Sie den Hostnamen für Ihre Datenbank.
   + **Port** – Bearbeiten Sie die Portnummer für Ihre Datenbank.
   + **Datenbank** – Bearbeiten Sie den Namen Ihrer Datenbank.
   + **JDBC-Parameter** – Bearbeiten Sie alle zusätzlichen JDBC-Parameter, die für Ihre Verbindung erforderlich sind. 
   + **Geheimnis** – Wählen oder erstellen Sie ein Geheimnis aus AWS Secrets Manager. Verwenden Sie AWS Geheimnisse, um zu vermeiden, dass vertrauliche Informationen in Ihrer JDBC-Verbindungszeichenfolge fest codiert werden. [Weitere Informationen finden Sie unter Was ist? AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) Informationen zum Erstellen eines Geheimnisses im Secrets Manager finden Sie unter [Erstellen eines AWS Secrets Manager -Geheimnisses](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) im *AWS Secrets Manager -Benutzerhandbuch*.

     Für die Verwendung AWS Secrets Manager mit Athena-Verbundabfragen müssen Sie einen privaten Amazon VPC-Endpunkt für Secrets Manager konfigurieren. Weitere Informationen finden Sie unter [Erstellen eines privaten Secrets-Manager-VPC-Endpunkts](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html#vpc-endpoint-create) im *Benutzerhandbuch für AWS Secrets Manager *.
   + **Überlaufspeicherort in Amazon S3** – Wählen oder erstellen Sie einen Amazon-S3-Bucket-Speicherort in Ihrem Konto aus, um Daten zu speichern, die die Größenbeschränkungen für Lambda-Funktionsantworten überschreiten.
**Anmerkung**  
Daten aus Datenlecks werden in nachfolgenden Ausführungen nicht wiederverwendet und können nach 12 Stunden sicher gelöscht werden. Athena löscht diese Daten nicht für Sie. Um diese Objekte zu verwalten, sollten Sie eine Richtlinie zum Objektlebenszyklus hinzufügen, die alte Daten aus Ihrem Amazon-S3-Spill-Bucket löscht. Weitere Informationen finden Sie unter [Managing your storage lifecycle (Verwaltung des Speicherlebenszyklus)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) im *Amazon-S3-Benutzerhandbuch*.
   + **Verschlüsselung für Abfrageergebnisse in S3** – Wählen Sie eine der folgenden Optionen:
     + (Standard) **Verwenden Sie einen zufällig generierten Schlüssel** – Daten die an Amazon S3 gesendet werden, mit dem AES-GCM-authentifizierten Verschlüsselungsmodus und einem zufällig generierten Schlüssel verschlüsselt.
     + **Einen AWS KMS Schlüssel verwenden** — Wählen oder erstellen Sie einen stärkeren, AWS KMS generierten Verschlüsselungsschlüssel. Weitere Informationen finden Sie unter [Erstellen von Schlüsseln](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html) im *AWS Key Management Service -Entwicklerhandbuch*.
     + **Ausschalten** – Verschlüsseln Sie keine Spill-Daten.
   + **Netzwerkeinstellungen** – Für einige Verbindungen ist eine Virtual Private Cloud (VPC) erforderlich. Wählen oder erstellen Sie eine VPC mit dem Datenspeicher, auf den Sie zugreifen möchten, einem Subnetz und einer oder mehreren Sicherheitsgruppen. Weitere Informationen finden Sie unter [Erstellen Sie eine VPC für einen Datenquellenconnector oder AWS Glue eine Datenquellenverbindung](athena-connectors-vpc-creation.md).
**Anmerkung**  
Nachdem Sie die Verbindungseigenschaften für Ressourcen wie Geheimnisse, Spill-Adresse oder AWS KMS Schlüssel-ID aktualisiert haben, stellen Sie sicher, dass die Lambda-Ausführungsrolle weiterhin Zugriff auf die aktualisierten Ressourcen hat.
Nachdem Sie die Netzwerkeinstellungen für Ihre Verbindung aktualisiert haben, stellen Sie sicher, dass Sie die Lambda-Funktion mit denselben Einstellungen aktualisieren, damit Ihre Verbindung mit der Datenquelle kompatibel ist.

   Informationen zu zusätzlichen Verbindungseigenschaften finden Sie unter [AWS Glue Verbindungseigenschaften](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html) im *AWS Glue Benutzerhandbuch* oder [Verfügbare Datenquellenkonnektoren](connectors-available.md) im *Amazon-Athena-Benutzerhandbuch*.

1. Wählen Sie **Speichern**.

Der Abschnitt **AWS Glue -Verbindungsdetails** auf der Seite für Ihre Datenquelle zeigt die aktualisierten Informationen für Ihren Connector an.

## Löschen einer Datenquelle
<a name="connectors-edit-data-source-delete"></a>

Wenn Sie eine Datenquelle löschen, wird nur die Athena-Datenquelle gelöscht und Ressourcen wie Glue Connections, IAM-Ausführungsrolle und Lambda-Funktion werden nicht gelöscht.

**So löschen Sie eine Datenquelle:**

1. Öffnen Sie die Athena-Konsole unter [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Wählen Sie im Navigationsbereich **Datenquellen und Kataloge** aus.

1. Wählen Sie auf der Seite **Datenquellen und Kataloge** die Datenquelle aus, die Sie löschen möchten.

1. Wählen Sie **Löschen** aus.

1. Geben Sie auf der Seite **Datenquelle löschen** den Text *bestätigen* ein, um den Löschvorgang zu bestätigen und wählen Sie dann **Löschen** aus. Es kann einige Zeit dauern, bis das Löschen der Datenquelle abgeschlossen ist. Sie erhalten eine Erfolgsmeldung, sobald die Datenquelle gelöscht wurde.

# Verbundabfragen ausführen
<a name="running-federated-queries"></a>

Wenn Sie einen oder mehrere Daten-Connector konfiguriert und in Ihrem Konto bereitgestellt haben, können Sie diese in Ihren Athena-Abfragen verwenden. 

## Abfragen einer einzelnen Datenquelle
<a name="running-federated-queries-single-data-source"></a>

In den Beispielen in diesem Abschnitt wird davon ausgegangen, dass Sie den [Amazon Athena Athena-Anschluss CloudWatch](connectors-cloudwatch.md) für Ihr Konto konfiguriert und bereitgestellt haben. Sie verwenden den gleichen Ansatz für Abfragen für andere Connectors.

**Um eine Athena-Abfrage zu erstellen, die den CloudWatch Konnektor verwendet**

1. Öffnen Sie die Athena-Konsole unter [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Erstellen Sie im Athena-Abfrage-Editor eine SQL-Abfrage mit der folgenden Syntax in der `FROM`-Klausel.

   ```
   MyCloudwatchCatalog.database_name.table_name       
   ```

### Beispiele
<a name="running-federated-queries-single-data-source-examples"></a>

Im folgenden Beispiel wird der CloudWatch Athena-Connector verwendet, um eine Verbindung mit der `all_log_streams` Ansicht in der [Gruppe `/var/ecommerce-engine/order-processor` CloudWatch Logs Log](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html) herzustellen. Die Ansicht `all_log_streams` ist eine Ansicht aller Protokollstreams in der Protokollgruppe. Die Beispielabfrage begrenzt die Anzahl der zurückgegebenen Zeilen auf 100.

```
SELECT * 
FROM "MyCloudwatchCatalog"."/var/ecommerce-engine/order-processor".all_log_streams 
LIMIT 100;
```

Im folgenden Beispiel werden Informationen aus derselben Ansicht wie im vorherigen Beispiel analysiert. Im Beispiel werden die Bestell-ID und die Protokollebene extrahiert und alle Nachrichten mit der Ebene `INFO` herausgefiltert.

```
SELECT 
    log_stream as ec2_instance, 
    Regexp_extract(message '.*orderId=(\d+) .*', 1) AS orderId, 
    message AS order_processor_log, 
    Regexp_extract(message, '(.*):.*', 1) AS log_level 
FROM MyCloudwatchCatalog."/var/ecommerce-engine/order-processor".all_log_streams 
WHERE Regexp_extract(message, '(.*):.*', 1) != 'INFO'
```

## Abfragen mehrerer Datenquellen
<a name="running-federated-queries-multiple-sources"></a>

Stellen Sie sich als komplexeres Beispiel ein E-Commerce-Unternehmen vor, das die folgenden Datenquellen verwendet, um Daten zu Kundenkäufen zu speichern:
+ [Amazon RDS für MySQL](https://aws.amazon.com/rds/mysql/) zum Speichern von Produktkatalogdaten
+ [Amazon DocumentDB](https://aws.amazon.com/documentdb/) zur Speicherung von Kundenkontodaten wie E-Mail- und Versandadressen
+ [Amazon DynamoDB](https://aws.amazon.com/dynamodb/) zum Speichern von Versand- und Tracking-Daten von Bestellungen

Stellen Sie sich vor, ein Datenanalyst für diese E-Commerce-Anwendung erfährt, dass die Versandzeit in einigen Regionen durch die lokalen Wetterbedingungen beeinflusst wurde. Der Analyst möchte wissen, wie viele Bestellungen verzögert sind, wo sich die betroffenen Kunden befinden und welche Produkte am stärksten betroffen sind. Anstatt die Informationsquellen separat zu untersuchen, verwendet der Analyst Athena, um die Daten in einer einzigen Verbundabfrage zusammenzuführen.

**Example**  

```
SELECT 
     t2.product_name AS product, 
     t2.product_category AS category, 
     t3.customer_region AS region, 
     count(t1.order_id) AS impacted_orders 
FROM my_dynamodb.default.orders t1 
JOIN my_mysql.products.catalog t2 ON t1.product_id = t2.product_id 
JOIN my_documentdb.default.customers t3 ON t1.customer_id = t3.customer_id 
WHERE 
     t1.order_status = 'PENDING'
     AND t1.order_date between '2022-01-01' AND '2022-01-05' 
GROUP BY 1, 2, 3 
ORDER BY 4 DESC
```

## Verbundansichten abfragen
<a name="running-federated-queries-federated-views"></a>

Bei der Abfrage von Verbundquellen können Sie Ansichten verwenden, um die zugrunde liegenden Datenquellen zu verschleiern oder komplexe Verknüpfungen vor anderen Analysten zu verbergen, die die Daten abfragen.

### Überlegungen und Einschränkungen
<a name="running-federated-queries-federated-views-considerations"></a>
+ Für Verbundansichten ist Athena-Engine-Version 3 erforderlich. 
+ Verbundene Ansichten werden in AWS Glue, nicht in der zugrunde liegenden Datenquelle gespeichert.
+ Verbund-Ansichten werden für Datenquellen, die [als Glue-Datenkatalog registriert](register-connection-as-gdc.md) sind, nicht unterstützt.
+ Ansichten, die mit Verbundkatalogen erstellt wurden, müssen die Syntax voll qualifizierter Namen verwenden, wie im folgenden Beispiel:

  ```
  "ddbcatalog"."default"."customers"
  ```
+ Benutzer, die Abfragen an Verbundquellen ausführen, müssen über die Berechtigung verfügen, die Verbundquellen abzufragen.
+ Die `athena:GetDataCatalog`-Berechtigung ist für Verbundansichten erforderlich. Weitere Informationen finden Sie unter [Zugriff auf Athena Federated Query zulassen: Beispiel-Richtlinien](federated-query-iam-access.md).

### Beispiele
<a name="running-federated-queries-federated-views-examples"></a>

Im folgenden Beispiel wird eine Ansicht mit dem Namen `customers` auf Daten erstellt, die in einer Verbunddatenquelle gespeichert sind.

**Example**  

```
CREATE VIEW customers AS
SELECT *
FROM my_federated_source.default.table
```

Die folgende Beispielabfrage zeigt eine Abfrage, die auf die `customers`-Ansicht statt auf die zugrunde liegende Verbunddatenquelle verweist.

**Example**  

```
SELECT id, SUM(order_amount)
FROM customers
GROUP by 1
ORDER by 2 DESC
LIMIT 50
```

Das folgende Beispiel erstellt eine Ansicht namens `order_summary`, die Daten aus einer Verbunddatenquelle und aus einer Amazon-S3-Datenquelle kombiniert. Aus der Verbundquelle, die bereits in Athena erstellt wurde, verwendet die Ansicht die Tabellen `person` und `profile`. In Amazon S3 verwendet die Ansicht die `purchase`- und `payment`-Tabellen. Um auf Amazon S3 zu verweisen, verwendet die Anweisung das Schlüsselwort `awsdatacatalog`. Beachten Sie, dass die Verbunddatenquelle die Syntax für vollqualifizierte Namen verwendet. *federated\$1source\$1name* *federated\$1source\$1database*. *federated\$1source\$1table*.

**Example**  

```
CREATE VIEW default.order_summary AS
SELECT *
FROM federated_source_name.federated_source_database."person" p
    JOIN federated_source_name.federated_source_database."profile" pr ON pr.id = p.id
    JOIN awsdatacatalog.default.purchase i ON p.id = i.id
    JOIN awsdatacatalog.default.payment pay ON pay.id = p.id
```

### Weitere Ressourcen
<a name="running-federated-queries-federated-views-additional-resources"></a>
+ Ein Beispiel für eine Verbundansicht, die von ihrer ursprünglichen Quelle entkoppelt ist und für On-Demand-Analysen in einem Mehrbenutzermodell verfügbar ist, finden Sie unter [Erweitern Sie Ihr Data Mesh mit Amazon Athena und Verbundansichten](https://aws.amazon.com/blogs/big-data/extend-your-data-mesh-with-amazon-athena-and-federated-views/) im *AWS -Big-Data-Blog*. 
+ Weitere Informationen zur Arbeit mit Ansichten in Athena finden Sie unter [Arbeiten mit Ansichten](views.md).

# Verbund-Passthrough-Abfragen verwenden
<a name="federated-query-passthrough"></a>

In Athena können Sie Abfragen für Verbund-Datenquellen mithilfe der Abfragesprache der Datenquelle selbst ausführen und die vollständige Abfrage zur Ausführung an die Datenquelle weiterleiten. Diese Abfragen werden als Pass-Through-Abfragen bezeichnet. Um Pass-Through-Abfragen auszuführen, verwenden Sie eine Tabellenfunktion in Ihrer Athena-Abfrage. Sie schließen die Passthrough-Abfrage, die für die Datenquelle ausgeführt werden soll, in eines der Argumente der Tabellenfunktion ein. Pass-Through-Abfragen geben eine Tabelle zurück, die Sie mit Athena SQL analysieren können.

## Unterstützte Konnektoren
<a name="federated-query-passthrough-supported-connectors"></a>

Die folgenden Athena-Datenquellen-Connectoren unterstützen Pass-Through-Abfragen.
+ [Azure Data Lake Storage](connectors-adls-gen2.md)
+ [Azure Synapse](connectors-azure-synapse.md)
+ [Cloudera Hive](connectors-cloudera-hive.md)
+ [Cloudera Impala](connectors-cloudera-impala.md)
+ [CloudWatch](connectors-cloudwatch.md)
+ [Db2](connectors-ibm-db2.md)
+ [Db2 iSeries](connectors-ibm-db2-as400.md)
+ [DocumentDB](connectors-docdb.md) 
+ [DynamoDB](connectors-dynamodb.md) 
+ [HBase](connectors-hbase.md)
+ [Google BigQuery](connectors-bigquery.md)
+ [Hortonworks](connectors-hortonworks.md)
+ [MySQL](connectors-mysql.md)
+ [Neptune](connectors-neptune.md)
+ [OpenSearch](connectors-opensearch.md) 
+ [Oracle](connectors-oracle.md)
+ [PostgreSQL](connectors-postgresql.md)
+ [Redshift](connectors-redshift.md)
+ [SAP HANA](connectors-sap-hana.md)
+ [Snowflake](connectors-snowflake.md)
+ [SQL Server](connectors-microsoft-sql-server.md)
+ [Teradata](connectors-teradata.md)
+ [Timestream](connectors-timestream.md)
+ [Vertica](connectors-vertica.md)

## Überlegungen und Einschränkungen
<a name="federated-query-passthrough-considerations-and-limitations"></a>

Berücksichtigen Sie bei der Verwendung von Pass-Through-Abfragen in Athena die folgenden Punkte:
+ Query-Passthrough wird nur für `SELECT`-Athena-Anweisungen oder Lesevorgänge unterstützt.
+ Die Abfrageleistung kann je nach Konfiguration der Datenquelle variieren.
+ Pass-Through-Abfrage unterstützt die differenzierte Zugriffskontrolle von Lake Formation nicht.
+ Pass-Through-Abfragen werden für Datenquellen, die [als Glue-Datenkatalog registriert](register-connection-as-gdc.md) sind, nicht unterstützt.

## Syntax
<a name="federated-query-passthrough-syntax"></a>

Die allgemeine Athena Passthrough-Abfrage-Syntax ist wie folgt.

```
SELECT * FROM TABLE(catalog.system.function_name(arg1 => 'arg1Value'[, arg2 => 'arg2Value', ...]))
```

Beachten Sie Folgendes:
+ **catalog** – Der Name des Athena-Verbundkonnektors oder des Datenkatalogs, auf den verwiesen wird.
+ **system** – Der Namespace, der die Funktion enthält. Alle Athena-Connector-Implementierungen verwenden diesen Namespace.
+ **function\$1name** – Der Name der Funktion, die die Passthrough-Abfrage an die Datenquelle weiterleitet. Dies wird oft `query` genannt. Die Kombination `catalog.system.function_name` ist der vollständige Auflösungspfad für die Funktion.
+ **arg1, arg2 usw.** – Funktionsargumente. Der Benutzer muss diese an die Funktion übergeben. In den meisten Fällen ist dies die Abfragezeichenfolge, die an die Datenquelle weitergegeben wird.

Bei den meisten Datenquellen ist das erste und einzige Argument `query`, gefolgt vom Pfeiloperator `=>` und der Abfragezeichenfolge.

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

Der Einfachheit halber können Sie das optionale benannte Argument `query` und den Pfeiloperator `=>` weglassen.

```
SELECT * FROM TABLE(catalog.system.query('query string'))
```

Sie können die Abfrage weiter vereinfachen, indem Sie den `catalog`-Namen entfernen, wenn die Abfrage im Kontext des Zielkatalogs ausgeführt wird.

```
SELECT * FROM TABLE(system.query('query string'))
```

Wenn die Datenquelle mehr als die Abfragezeichenfolge benötigt, verwenden Sie benannte Argumente in der von der Datenquelle erwarteten Reihenfolge. Der Ausdruck `arg1 => 'arg1Value'` enthält beispielsweise das erste Argument und seinen Wert. Der Name *arg1* ist spezifisch für die Datenquelle und kann von Connector zu Connector unterschiedlich sein.

```
SELECT * FROM TABLE(
        system.query(
            arg1 => 'arg1Value',
            arg2 => 'arg2Value',
            arg3 => 'arg3Value'
        ));
```

Das Obige kann auch vereinfacht werden, indem die Argumentnamen weggelassen werden. Sie müssen jedoch die Reihenfolge der Methodensignatur einhalten. Weitere Informationen zur Signatur der Funktion finden Sie in der Dokumentation der einzelnen Konnektoren.

```
SELECT * FROM TABLE(catalog.system.query('arg1Value', 'arg2Value', 'arg3Value'))
```

Sie können mehrere Pass-Through-Abfragen über verschiedene Athena-Konnektoren ausführen, indem Sie den vollständigen Funktionsauflösungspfad verwenden, wie im folgenden Beispiel gezeigt.

```
SELECT c_customer_sk 
    FROM TABLE (postgresql.system.query('select * from customer limit 10'))
UNION
SELECT c_customer_sk 
    FROM TABLE(dynamodb.system.query('select * from customer')) LIMIT 10
```

Sie können Passthrough-Abfragen als Teil einer Verbund-Ansicht verwenden. Es gelten die gleichen Einschränkungen. Weitere Informationen zu finden Sie unter [Verbundansichten abfragen](https://docs.aws.amazon.com/athena/latest/ug/running-federated-queries.html#running-federated-queries-federated-views).

```
CREATE VIEW catalog.database.ViewName AS
    SELECT * FROM TABLE (
        catalog.system.query('query')
    )
```

Informationen zur genauen Syntax, die mit einem bestimmten Konnektor verwendet werden muss, finden Sie in der Dokumentation zu den einzelnen Konnektoren.

### Verwendung von Anführungszeichen
<a name="federated-query-passthrough-syntax-quotation-marks"></a>

Argumentwerte, einschließlich der von Ihnen übergebenen Abfragezeichenfolge, müssen in einfache Anführungszeichen eingeschlossen werden, wie im folgenden Beispiel.

```
SELECT * FROM TABLE(system.query(query => 'SELECT * FROM testdb.persons LIMIT 10'))
```

Wenn die Abfragezeichenfolge von Anführungszeichen umgeben ist, schlägt die Abfrage fehl. Die folgende Abfrage schlägt mit der folgenden Fehlermeldung fehl COLUMN\$1NOT\$1FOUND: Zeile 1:43: Die Spalte 'select \$1 von testdb.persons limit 10' kann nicht gelöst werden.

```
SELECT * FROM TABLE(system.query(query => "SELECT * FROM testdb.persons LIMIT 10"))
```

Um ein einfaches Anführungszeichen zu umgehen, fügen Sie dem Original ein einfaches Anführungszeichen hinzu (z. B. `terry's_group` zu `terry''s_group`).

## Beispiele
<a name="federated-query-passthrough-sql-based-connectors-examples"></a>

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

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

Die folgende Anweisung führt dieselbe Abfrage aus, entfernt jedoch das optionale benannte Argument `query` und den Pfeiloperator `=>`.

```
SELECT * FROM TABLE(
        catalog.system.query(
            'SELECT * FROM customer LIMIT 10;'
        ))
```

Dies kann auch in einer Verbundansicht zusammengefasst werden, um die Wiederverwendung zu vereinfachen. Bei der Verwendung mit einer Ansicht müssen Sie den vollständigen Funktionsauflösungspfad verwenden.

```
CREATE VIEW AwsDataCatalog.default.example_view AS
    SELECT * FROM TABLE (
        catalog.system.query('SELECT * FROM customer LIMIT 10;')
    )
```

## Abmelden von Pass-Through-Abfrage
<a name="federated-query-passthrough-sql-based-connectors-opting-out"></a>

Um Passthrough-Abfragen zu deaktivieren, fügen Sie eine Lambda-Umgebungsvariable mit dem Namen `enable_query_passthrough` hinzu und setzen Sie sie auf `false`.

# Grunlegendes über Qualifikatoren für verbundene Tabellennamen
<a name="tables-qualifiers"></a>

Athena verwendet die folgenden Begriffe, um sich auf Hierarchien von Datenobjekten zu beziehen:
+ **Datenquelle** – eine Gruppe von Datenbanken
+ **Datenbank** – eine Gruppe von Tabellen
+ **Tabelle** – Daten, die als Gruppe von Zeilen oder Spalten organisiert sind

Manchmal werden diese Objekte auch mit alternativen, aber gleichwertigen Namen bezeichnet, z. B. den folgenden:
+ Eine Datenquelle wird manchmal auch als Katalog bezeichnet.
+ Eine Datenbank wird manchmal auch als Schema bezeichnet.

## Begriffe in verbundenen Datenquellen
<a name="tables-qualifiers-terms-in-federated-data-sources"></a>

Wenn Sie verbundene Datenquellen abfragen, beachten Sie, dass die zugrunde liegende Datenquelle möglicherweise nicht dieselbe Terminologie wie Athena verwendet. Beachten Sie diesen Unterschied, wenn Sie Ihre Verbundabfragen schreiben. In den folgenden Abschnitten wird beschrieben, wie Datenobjektbegriffe in Athena denen in verbundenen Datenquellen entsprechen.

### Amazon Redshift
<a name="tables-qualifiers-redshift"></a>

Eine *Datenbank* von Amazon Redshift ist eine Gruppe von Redshift-*Schemas*, die eine Gruppe von Redshift-*Tabellen* enthält.


****  

| Athena | Redshift | 
| --- | --- | 
| Redshift-Datenquelle | Eine Lambda-Funktion des Redshift-Konnektors, die so konfiguriert ist, dass sie auf eine Redshift-database verweist. | 
| data\$1source.database.table | database.schema.table | 

Beispielabfrage

```
SELECT * FROM 
Athena_Redshift_connector_data_source.Redshift_schema_name.Redshift_table_name
```

Weitere Informationen zu diesem Konnektor finden Sie unter [Amazon Athena Redshift Konnektor](connectors-redshift.md).

### Cloudera Hive
<a name="tables-qualifiers-cloudera-hive"></a>

*Ein Cloudera-Hive-*Server* oder *-Cluster* ist eine Gruppe von Cloudera-Hive-*Datenbanken*, die eine Gruppe von Cloudera-Hive-Tabellen* enthält.


****  

| Athena | Hive | 
| --- | --- | 
| Cloudera-Hive-Datenquelle | Lambda-Funktion für Cloudera-Hive-Konnektor konfiguriert, um auf eine Cloudera-Hive-server zu zeigen. | 
| data\$1source.database.table | server.database.table | 

Beispielabfrage

```
SELECT * FROM 
Athena_Cloudera_Hive_connector_data_source.Cloudera_Hive_database_name.Cloudera_Hive_table_name
```

Weitere Informationen zu diesem Konnektor finden Sie unter [Amazon Athena Cloudera Hive Konnektor](connectors-cloudera-hive.md).

### Cloudera Impala
<a name="tables-qualifiers-cloudera-impala"></a>

Ein Impala-*Server* oder -*Cluster* ist eine Gruppe von Impala-*Datenbanken*, die eine Gruppe von Impala-*Tabellen* enthält.


****  

| Athena | Impala | 
| --- | --- | 
| Impala-Datenquelle | Die Lambda-Funktion des Impala-Konnektors ist so konfiguriert, dass sie auf einen Impala-server zeigt. | 
| data\$1source.database.table | server.database.table | 

Beispielabfrage

```
SELECT * FROM 
Athena_Impala_connector_data_source.Impala_database_name.Impala_table_name
```

Weitere Informationen zu diesem Konnektor finden Sie unter [Amazon Athena Cloudera Impala Connector](connectors-cloudera-impala.md).

### MySQL
<a name="tables-qualifiers-mysql"></a>

Ein MySQL-*Server* ist eine Gruppe von MySQL-*Datenbanken*, die eine Gruppe von MySQL-*Tabellen* enthält.


****  

| Athena | MySQL | 
| --- | --- | 
| MySQL-Datenquelle | Die Lambda-Funktion des MySQL-Konnektors ist so konfiguriert, dass sie auf einen MySQL-server zeigt. | 
| data\$1source.database.table | server.database.table | 

Beispielabfrage

```
SELECT * FROM 
Athena_MySQL_connector_data source.MySQL_database_name.MySQL_table_name
```

Weitere Informationen zu diesem Konnektor finden Sie unter [Amazon Athena MySQL Konnektor](connectors-mysql.md).

### Oracle
<a name="tables-qualifiers-oracle"></a>

Ein Oracle-*Server* (oder *Datenbank*) ist eine Gruppe von Oracle-*Schemas*, die eine Gruppe von Oracle-*Tabellen* enthält.


****  

| Athena | Oracle | 
| --- | --- | 
| Oracle-Datenquelle | Die Lambda-Funktion des Oracle-Konnektors ist so konfiguriert, dass sie auf einen Oracle-server zeigt. | 
| data\$1source.database.table | server.schema.table | 

Beispielabfrage

```
SELECT * FROM 
Athena_Oracle_connector_data_source.Oracle_schema_name.Oracle_table_name
```

Weitere Informationen zu diesem Konnektor finden Sie unter [Amazon Athena Oracle Konnektor](connectors-oracle.md).

### Postgres
<a name="tables-qualifiers-postgres"></a>

Ein *Postgres-Server* (oder *-Cluster*) ist eine Gruppe von Postgres-*Datenbanken*. Eine Postgres-*Datenbank* ist eine Gruppe von *Postgres-Schemas*, die eine Gruppe von Postgres-*Tabellen* enthält.


****  

| Athena | Postgres | 
| --- | --- | 
| Postgres-Datenquelle | Die Lambda-Funktion des Postgres-Konnektors ist so konfiguriert, dass sie auf ein Postgres-server und -database zeigt. | 
| data\$1source.database.table | server.database.schema.table | 

Beispielabfrage

```
SELECT * FROM 
Athena_Postgres_connector_data_source.Postgres_schema_name.Postgres_table_name
```

Weitere Informationen zu diesem Konnektor finden Sie unter [Amazon Athena PostgreSQL Konnektor](connectors-postgresql.md).

# Entwickeln eines Datenquellen-Konnektors mithilfe des Athena Query Federation SDK
<a name="connect-data-source-federation-sdk"></a>

Um eigene Datenquellen-Connectors zu schreiben, können Sie den [Athena Query Verbund-SDK](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-federation-sdk) verwenden. Der Athena Query Federation SDK definiert einen Satz von Schnittstellen und Wire-Protokollen, mit denen Sie Athena ermöglichen können, Teile des Abfrageausführungsplans an Code zu delegieren, den Sie schreiben und bereitstellen. Das SDK enthält eine Connector-Suite und einen Beispiel-Connector.

Benutzerdefinierte Konnektoren verwenden keine Glue Connections, um die Konfigurationseigenschaften in Glue zu zentralisieren. Die Verbindungskonfiguration erfolgt über Lambda.

Sie können die [vorgefertigten Connectors](https://github.com/awslabs/aws-athena-query-federation/wiki/Available-Connectors) von Amazon Athena auch für Ihren eigenen Gebrauch anpassen. Sie können eine Kopie des Quellcodes ändern GitHub und dann das [Connector-Publish-Tool](https://github.com/awslabs/aws-athena-query-federation/wiki/Connector_Publish_Tool) verwenden, um Ihr eigenes AWS Serverless Application Repository Paket zu erstellen. Nachdem Sie den Connector auf diese Weise bereitgestellt haben, können Sie ihn in Ihren Athena-Abfragen verwenden.

Informationen zum Herunterladen des SDK und detaillierte Anweisungen zum Schreiben Ihres eigenen Connectors finden Sie unter [Beispiel für einen Athena-Connector](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-example) auf GitHub.

# Arbeiten mit Datenquellenkonnektoren für Apache Spark
<a name="connectors-spark"></a>

Einige Athena-Datenquellenkonnektoren sind als DSV2 Spark-Konnektoren verfügbar. Die Namen der DSV2 Spark-Konnektoren haben ein `-dsv2` Suffix (z. B.`athena-dynamodb-dsv2`).

Im Folgenden finden Sie die derzeit verfügbaren DSV2 Konnektoren, ihren `.format()` Spark-Klassennamen und Links zur entsprechenden Amazon Athena Federated Query-Dokumentation:


| DSV2 Konnektor | Spark .format() class name | Dokumentation | 
| --- | --- | --- | 
| athena-cloudwatch-dsv2 | com.amazonaws.athena.connectors.dsv2.cloudwatch.CloudwatchTableProvider | [CloudWatch](connectors-cloudwatch.md) | 
| athena-cloudwatch-metrics-dsv2 | com.amazonaws.athena.connectors.dsv2.cloudwatch.metrics.CloudwatchMetricsTableProvider | [CloudWatch Metriken](connectors-cwmetrics.md) | 
| athena-aws-cmdb-dsv2 | com.amazonaws.athena.connectors.dsv2.aws.cmdb.AwsCmdbTableProvider | [CMDB](connectors-cmdb.md) | 
| athena-dynamodb-dsv2 | com.amazonaws.athena.connectors.dsv2.dynamodb.DDBTableProvider | [DynamoDB](connectors-dynamodb.md) | 

Um `.jar` Dateien für die DSV2 Konnektoren herunterzuladen, besuchen Sie die DSV2 GitHub Seite [Amazon Athena Query Federation](https://github.com/awslabs/aws-athena-query-federation-dsv2) und sehen Sie sich den Abschnitt **Releases**, **Release *<version>***, **Assets** an.

## JAR für Spark angeben
<a name="connectors-spark-specifying-the-jar-to-spark"></a>

Um die DSV2 Athena-Konnektoren mit Spark zu verwenden, senden Sie die `.jar` Datei für den Konnektor an die Spark-Umgebung, die Sie verwenden. In den folgenden Abschnitten werden spezifische Fälle beschrieben.

### Athena für Spark
<a name="connectors-spark-ate"></a>

Informationen zum Hinzufügen von benutzerdefinierten `.jar`-Dateien und zur benutzerdefinierten Konfiguration zu Amazon Athena für Apache Spark finden Sie unter [Spark-Eigenschaften verwenden um eine benutzerdefinierte Konfiguration anzugeben](notebooks-spark-custom-jar-cfg.md).

### General Spark
<a name="connectors-spark-general"></a>

Um die `.jar`-Konnektor-Datei an Spark zu übergeben, verwenden Sie den `spark-submit`-Befehl und geben Sie die Datei `.jar` in der Option `--jars` an, wie im folgenden Beispiel:

```
spark-submit \ 
  --deploy-mode cluster \ 
  --jars https://github.com/awslabs/aws-athena-query-federation-dsv2/releases/download/some_version/athena-dynamodb-dsv2-some_version.jar
```

### Amazon EMR Spark
<a name="connectors-spark-emr"></a>

Um einen `spark-submit`-Befehl mit dem Parameter `--jars` auf Amazon EMR auszuführen, müssen Sie Ihrem Amazon-EMR-Spark-Cluster einen Schritt hinzufügen. Einzelheiten zur Verwendung von `spark-submit` auf Amazon EMR finden Sie unter [Spark-Schritt hinzufügen](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-submit-step.html) im *Amazon-EMR-Versionshandbuch*.

### AWS Glue ETL Spark
<a name="connectors-spark-glue-etl"></a>

Für AWS Glue ETL können Sie die GitHub .com-URL der `.jar` Datei an das `--extra-jars` Argument des `aws glue start-job-run` Befehls übergeben. In der AWS Glue Dokumentation wird beschrieben, dass der `--extra-jars` Parameter einen Amazon S3 S3-Pfad verwendet, aber der Parameter kann auch eine HTTPS-URL verwenden. Weitere Informationen finden Sie in der [Aufgabenparameter-Referenz](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html#w5aac32c13c11) im *AWS Glue -Entwicklerhandbuch*.

## Den Konnektor auf Spark abfragen
<a name="connectors-spark-querying-the-connector"></a>

Verwenden Sie die Funktion `spark.sql()`, um das Äquivalent Ihrer vorhandenen Athena-Verbundabfrage auf Apache Spark einzureichen. Nehmen wir beispielsweise an, die folgende Athena-Abfrage wurde mit Apache Spark erstellt.

```
SELECT somecola, somecolb, somecolc 
FROM ddb_datasource.some_schema_or_glue_database.some_ddb_or_glue_table 
WHERE somecola > 1
```

Verwenden Sie den folgenden Code, um dieselbe Abfrage auf Spark mithilfe des Amazon Athena DSV2 DynamoDB-Connectors durchzuführen:

```
dynamoDf = (spark.read 
    .option("athena.connectors.schema", "some_schema_or_glue_database") 
    .option("athena.connectors.table", "some_ddb_or_glue_table") 
    .format("com.amazonaws.athena.connectors.dsv2.dynamodb.DDBTableProvider") 
    .load()) 
 
dynamoDf.createOrReplaceTempView("ddb_spark_table") 
 
spark.sql(''' 
SELECT somecola, somecolb, somecolc 
FROM ddb_spark_table 
WHERE somecola > 1 
''')
```

## Angeben von Parametern
<a name="connectors-spark-parameters"></a>

Die DSV2 Versionen der Athena-Datenquellenkonnektoren verwenden dieselben Parameter wie die entsprechenden Athena-Datenquellen-Konnektoren. Informationen zu den Parametern finden Sie in der Dokumentation für den entsprechenden Athena-Datenquellenkonnektor.

Verwenden Sie in Ihrem PySpark Code die folgende Syntax, um Ihre Parameter zu konfigurieren.

```
spark.read.option("athena.connectors.conf.parameter", "value")
```

Der folgende Code setzt zum Beispiel den Parameter des Amazon-Athena-DynamoDB-Konnektors `disable_projection_and_casing` auf `always`.

```
dynamoDf = (spark.read 
    .option("athena.connectors.schema", "some_schema_or_glue_database") 
    .option("athena.connectors.table", "some_ddb_or_glue_table") 
    .option("athena.connectors.conf.disable_projection_and_casing", "always") 
    .format("com.amazonaws.athena.connectors.dsv2.dynamodb.DDBTableProvider") 
    .load())
```