Erste Schritte mit dem JDBC-Treiber 3.x - Amazon Athena

Erste Schritte mit dem JDBC-Treiber 3.x

Verwenden Sie die Informationen in diesem Abschnitt, um mit dem JDBC-3.x-Treiber von Amazon Athena zu beginnen.

Installationsanleitungen

Sie können den JDBC-3.x-Treiber in einer benutzerdefinierten Anwendung oder in einem SQL-Client eines Drittanbieters verwenden.

In einer benutzerdefinierten Anwendung

Laden Sie die .zip-Datei herunter, die die Treiber-jar und ihre Abhängigkeiten enthält. Jede Abhängigkeit hat ihre eigene .jar-Datei. Fügen Sie in Ihrer benutzerdefinierten Anwendung die Treiber-jar als Abhängigkeit hinzu. Fügen Sie die Abhängigkeiten der Treiber-jar selektiv hinzu, je nachdem, ob Sie diese Abhängigkeiten bereits aus einer anderen Quelle zu Ihrer Anwendung hinzugefügt haben.

In einem SQL-Client eines Drittanbieters

Laden Sie die Treiber-uber-jar herunter und fügen Sie sie dem SQL-Client eines Drittanbieters hinzu, indem Sie den Anweisungen für diesen Client folgen.

Ausführen des Treibers

Verwenden Sie zum Ausführen des Treibers eine benutzerdefinierte Anwendung oder einen SQL-Client eines Drittanbieters.

In einer benutzerdefinierten Anwendung

Verwenden Sie die JDBC-Schnittstelle, um von einem Programm aus mit dem JDBC-Treiber zu interagieren. Der folgende Code zeigt eine benutzerdefinierte Java-Beispielanwendung.

public static void main(String args[]) throws SQLException { Properties connectionParameters = new Properties(); connectionParameters.setProperty("Workgroup", "primary"); connectionParameters.setProperty("Region", "us-east-2"); connectionParameters.setProperty("Catalog", "AwsDataCatalog"); connectionParameters.setProperty("Database","sampledatabase"); connectionParameters.setProperty("OutputLocation","s3://amzn-s3-demo-bucket"); connectionParameters.setProperty("CredentialsProvider","DefaultChain"); String url = "jdbc:athena://"; AthenaDriver driver = new AthenaDriver(); Connection connection = driver.connect(url, connectionParameters); Statement statement = connection.createStatement(); String query = "SELECT * from sample_table LIMIT 10"; ResultSet resultSet = statement.executeQuery(query); printResults(resultSet); // A custom-defined method for iterating over a // result set and printing its contents }

In einem SQL-Client eines Drittanbieters

Folgen Sie der Dokumentation für den SQL-Client, den Sie verwenden. In der Regel verwenden Sie die grafische Benutzeroberfläche des SQL-Clients, um die Abfrage einzugeben und zu senden, und die Abfrageergebnisse werden in derselben Oberfläche angezeigt.

Konfigurieren des Treibers

Sie können Verbindungsparameter verwenden, um den Amazon-Athena-JDBC-Treiber zu konfigurieren. Informationen zu unterstützten Verbindungsparametern finden Sie unter Amazon-Athena-JDBC-3.x-Verbindungsparameter.

In einer benutzerdefinierten Anwendung

Führen Sie einen der folgenden Schritte aus, um die Verbindungsparameter für den JDBC-Treiber in einer benutzerdefinierten Anwendung festzulegen:

  • Fügen Sie die Parameternamen und ihre Werte zu einem Properties-Objekt hinzu. Wenn Sie Connection#connect aufrufen, übergeben Sie dieses Objekt zusammen mit der URL. Ein Beispiel dafür finden Sie in der Java-Beispielanwendung in Ausführen des Treibers.

  • Verwenden Sie in der Verbindungszeichenfolge (der URL) das folgende Format, um die Parameternamen und ihre Werte direkt nach dem Protokollpräfix hinzuzufügen.

    <parameterName>=<parameterValue>;

    Verwenden Sie am Ende jedes Paars aus Parameternamen und Parameterwerten ein Semikolon und setzen Sie nach dem Semikolon kein Leerzeichen, wie im folgenden Beispiel.

    String url = "jdbc:athena://WorkGroup=primary;Region=us-east-1;...;";AthenaDriver driver = new AthenaDriver();Connection connection = driver.connect(url, null);
    Anmerkung

    Wenn ein Parameter sowohl in der Verbindungszeichenfolge als auch im Properties-Objekt angegeben ist, hat der Wert in der Verbindungszeichenfolge Vorrang. Es wird nicht empfohlen, an beiden Stellen denselben Parameter anzugeben.

  • Fügen Sie die Parameterwerte als Argumente zu den Methoden von AthenaDataSource hinzu, wie im folgenden Beispiel.

    AthenaDataSource dataSource = new AthenaDataSource(); dataSource.setWorkGroup("primary"); dataSource.setRegion("us-east-2"); ... Connection connection = dataSource.getConnection(); ...

In einem SQL-Client eines Drittanbieters

Folgen Sie den Anweisungen des SQL-Clients, den Sie verwenden. In der Regel bietet der Client eine grafische Benutzeroberfläche zur Eingabe der Parameternamen und ihrer Werte.

Upgrade vom Athena-JDBC-v2-Treiber

Die meisten Verbindungsparameter von JDBC Version 3 sind abwärtskompatibel mit dem JDBC-Treiber der Version 2 (Simba). Das bedeutet, dass eine Verbindungszeichenfolge der Version 2 mit Version 3 des Treibers wiederverwendet werden kann. Einige Verbindungsparameter haben sich jedoch geändert. Diese Änderungen werden hier beschrieben. Wenn Sie auf den JDBC-Treiber der Version 3 aktualisieren, aktualisieren Sie gegebenenfalls Ihre bestehende Konfiguration.

Treiberklasse

Bei einigen BI-Tools werden Sie aufgefordert, die Treiberklasse aus der JDBC-Treiber-.jar-Datei anzugeben. Die meisten Tools finden diese Klasse automatisch. Der vollständig qualifizierte Name der Klasse im Treiber der Version 3 lautet com.amazon.athena.jdbc.AthenaDriver. Im Treiber der Version 2 war die Klasse com.simba.athena.jdbc.Driver.

Verbindungszeichenfolge

Der Treiber der Version 3 verwendet jdbc:athena:// für das Protokoll am Anfang der JDBC-Verbindungszeichenfolgen-URL. Der Treiber der Version 3 unterstützt auch das Protokoll jdbc:awsathena:// der Version 2, aber die Verwendung des Protokolls der Version 2 ist veraltet. Um undefiniertes Verhalten zu vermeiden, akzeptiert Version 3 keine Verbindungszeichenfolgen, die mit jdbc:awsathena:// beginnen, wenn Version 2 (oder ein anderer Treiber, der Verbindungszeichenfolgen akzeptiert, die mit jdbc:awsathena:// beginnen) mit der DriverManager-Klasse registriert wurde.

Anmeldeinformationsanbieter

Der Treiber der Version 2 verwendet vollqualifizierte Namen, um verschiedene Anbieter von Anmeldeinformationen zu identifizieren, z. B. com.simba.athena.amazonaws.auth.DefaultAWSCredentialsProviderChain. Der Treiber der Version 3 verwendet kürzere Namen, z. B. DefaultChain. Die neuen Namen werden in den entsprechenden Abschnitten für jeden Anbieter von Anmeldeinformationen beschrieben.

Anbieter für benutzerdefinierte Anmeldeinformationen, die für den Treiber der Version 2 geschrieben wurden, müssen für den Treiber der Version 3 geändert werden, um die AwsCredentialsProvider-Schnittstelle aus der neuen AWS SDK für Java anstelle der AwsCredentialsProvider-Schnittstelle aus der vorherigen AWS SDK für Java zu implementieren.

Das PropertiesFileCredentialsProvider wird im JDBC-Treiber 3.x nicht unterstützt. Der Anbieter wurde im JDBC-Treiber 2.x verwendet, gehört aber zur Vorgängerversion des AWS SDK für Java, dessen Support bald ausläuft. Verwenden Sie stattdessen den AWS-Anmeldeinformationen eines Konfigurationsprofils-Anbieter, um dieselbe Funktionalität im JDBC-Treiber 3.x zu erhalten.

Protokollebene

Die folgende Tabelle zeigt die Unterschiede in den LogLevel-Parametern in den JDBC-Treibern Version 2 und Version 3.

JDBC-Treiberversion Parametername Parametertyp Standardwert Mögliche Werte Beispiel für Verbindungszeichenfolgen
v2 LogLevel Optional 0 0-6 LogLevel=6;
v3 LogLevel Optional TRACE OFF, ERROR, WARN, INFO, DEBUG, TRACE LogLevel=INFO;

Abrufen der Abfrage-ID

Im Treiber der Version 2 entpacken Sie eine Statement-Instance nach com.interfaces.core.IStatementQueryInfoProvider, eine Schnittstelle, die über zwei Methoden verfügt: #getPReparedQueryId und #getQueryId. Sie können diese Methoden verwenden, um die Abfrageausführungs-ID einer Abfrage abzurufen, die ausgeführt wurde.

Im Treiber der Version 3 entpacken Sie die Instances Statement, PreparedStatement, und ResultSet in die Schnittstelle com.amazon.athena.jdbc.AthenaResultSet. Die Schnittstelle hat eine Methode: #getQueryExecutionId.