View a markdown version of this page

JDBC 3.x 드라이버 시작하기 - Amazon Athena

JDBC 3.x 드라이버 시작하기

이 섹션의 정보를 사용하여 Amazon Athena JDBC 3.x 드라이버를 시작하세요.

설치 지침

사용자 지정 애플리케이션 또는 서드 파티 SQL 클라이언트에서 JDBC 3.x 드라이버를 사용할 수 있습니다.

사용자 지정 애플리케이션에서

드라이버 및 해당 종속 항목이 포함된 .zip 파일을 다운로드합니다. 드라이버 .jar 파일과 runtime-dependencies 디렉터리의 다른 모든 .jar 파일을 사용자 지정 애플리케이션의 Java 클래스 경로에 추가합니다. 애플리케이션이 해당 종속성의 호환 버전을 이미 제공하는 경우에만 .jar 파일을 생략합니다. AthenaStreamingJavaClient-2.0.jar 파일은 software.amazon.awssdk.services.athenastreaming.AthenaStreamingAsyncClient 클래스를 제공합니다. 애플리케이션이 이미 해당 클래스를 제공하지 않는 한 이 파일을 포함합니다.

서드 파티 SQL 클라이언트에서

드라이버 uber jar 파일을 다운로드하고 해당 클라이언트에 대한 지침에 따라 서드 파티 SQL 클라이언트에 추가합니다.

드라이버 실행

드라이버를 실행하려면 사용자 지정 애플리케이션이나 서드 파티 SQL 클라이언트를 사용합니다.

사용자 지정 애플리케이션에서

JDBC 인터페이스를 사용하여 프로그램에서 JDBC 드라이버와 상호 작용합니다. 다음 코드는 샘플 사용자 지정 Java 애플리케이션을 보여줍니다.

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 }

서드 파티 SQL 클라이언트에서

사용 중인 SQL 클라이언트에 대한 설명서를 따릅니다. 일반적으로 SQL 클라이언트의 그래픽 사용자 인터페이스를 사용하여 쿼리를 입력하고 제출하면 쿼리 결과가 동일한 인터페이스에 표시됩니다.

드라이버 구성

연결 파라미터를 사용하여 Amazon Athena JDBC 드라이버를 구성할 수 있습니다. 지원되는 연결 파라미터는 Amazon Athena JDBC 3.x 연결 파라미터 섹션을 참조하세요.

사용자 지정 애플리케이션에서

사용자 지정 애플리케이션에서 JDBC 드라이버의 연결 파라미터를 설정하려면 다음 중 하나를 수행합니다.

  • 파라미터 이름과 해당 값을 Properties 객체에 추가합니다. Connection#connect를 직접적으로 호출할 때 해당 객체를 URL과 함께 전달합니다. 예제는 드라이버 실행의 샘플 Java 애플리케이션을 참조하세요.

  • 연결 문자열(URL)에서 다음 형식을 사용하여 프로토콜 접두사 바로 뒤에 파라미터 이름과 해당 값을 추가합니다.

    <parameterName>=<parameterValue>;

    다음 예제와 같이 각 파라미터 이름/파라미터 값 페어의 끝에 세미콜론을 사용하고 세미콜론 뒤에 공백을 남기지 않습니다.

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

    연결 문자열과 Properties 객체 모두에 파라미터가 지정된 경우 연결 문자열의 값이 우선합니다. 두 위치 모두에 동일한 파라미터를 지정하는 것은 권장되지 않습니다.

  • 다음 예제와 같이 파라미터 값을 AthenaDataSource의 메서드에 인수로 추가합니다.

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

서드 파티 SQL 클라이언트에서

사용 중인 SQL 클라이언트의 지침을 따릅니다. 일반적으로 클라이언트는 파라미터 이름과 해당 값을 입력할 수 있는 그래픽 사용자 인터페이스를 제공합니다.

Athena JDBC v2 드라이버에서 업그레이드

대부분의 JDBC 버전 3 연결 파라미터는 이전 버전인 버전 2(Simba) JDBC 드라이버와 호환됩니다. 즉, 버전 2 연결 문자열을 드라이버 버전 3에서 재사용할 수 있습니다. 그러나 일부 연결 파라미터가 변경되었습니다. 이러한 변경 사항은 여기에서 설명합니다. 버전 3 JDBC 드라이버로 업그레이드할 때 필요한 경우 기존 구성을 업데이트하세요.

드라이버 클래스

일부 BI 도구는 JDBC 드라이버 .jar 파일에서 드라이버 클래스를 제공하도록 요청합니다. 대부분의 도구는 이 클래스를 자동으로 찾습니다. 버전 3 드라이버에서 클래스의 정규화된 이름은 com.amazon.athena.jdbc.AthenaDriver입니다. 버전 2 드라이버에서 클래스는 com.simba.athena.jdbc.Driver였습니다.

연결 문자열

버전 3 드라이버는 JDBC 연결 문자열 URL 시작 부분의 프로토콜에 jdbc:athena://를 사용합니다. 버전 3 드라이버는 버전 2 프로토콜 jdbc:awsathena://도 지원하지만 버전 2 프로토콜은 더 이상 사용되지 않습니다. 정의되지 않은 동작을 방지하기 위해 버전 3에서는 버전 2(또는 jdbc:awsathena://로 시작하는 연결 문자열을 허용하는 다른 드라이버)가 DriverManager 클래스에 등록된 경우 jdbc:awsathena://로 시작하는 연결 문자열을 허용하지 않습니다.

문자열 열 메타데이터

JDBC 3.x 드라이버에서는 더 이상 JDBC 2.x StringColumnLength 연결 파라미터를 사용할 수 없습니다. 대신 ResultSetMetaData.getPrecisionResultSetMetaData.getColumnDisplaySize를 포함한 표준 JDBC 메타데이터 방법을 통해 Athena가 제공하는 정밀도에 액세스할 수 있습니다. Athena string 유형은 무제한이므로 보고된 정밀도는 2147483647일 수 있습니다.

애플리케이션이 JDBC 메타데이터에서 고정 크기 버퍼를 할당하는 경우 가변 크기 버퍼를 사용하도록 구성합니다. 애플리케이션에 경계 열 메타데이터가 필요한 경우 쿼리에서 열을 varchar(n)로 캐스팅하거나 뷰를 통해 캐스팅을 노출합니다. 더 작은 크기로 캐스팅하면 값이 잘릴 수 있으므로 모든 예상 데이터를 보존하는 n 값을 선택합니다.

보안 인증 제공업체

버전 2 드라이버는 정규화된 이름(예: com.simba.athena.amazonaws.auth.DefaultAWSCredentialsProviderChain)을 사용하여 서로 다른 보안 인증 제공업체를 식별합니다. 버전 3 드라이버는 더 짧은 이름(예: DefaultChain)을 사용합니다. 새 이름은 각 보안 인증 제공업체의 해당 섹션에 설명되어 있습니다.

새로운 AWS SDK for Java의 AwsCredentialsProvider 인터페이스를 지난 AWS SDK for Java의 AWSCredentialsProvider 인터페이스 대신 구현하려면 버전 2 드라이버용으로 작성된 사용자 지정 보안 인증 제공업체를 버전 3 드라이버용으로 수정해야 합니다.

PropertiesFileCredentialsProvider는 JDBC 3.x 드라이버에서 지원되지 않습니다. 이 공급자는 JDBC 2.x 드라이버에서 사용되었지만 지원이 거의 종료되어가는 이전 버전의 Java용 AWS SDK에 속합니다. JDBC 3.x 드라이버에서 동일한 기능을 사용하려면 AWS 구성 프로파일 보안 인증 공급자를 대신 사용하세요.

로그 수준

다음 표에서는 JDBC 버전 2 드라이버와 버전 3 드라이버의 LogLevel 파라미터 차이점을 보여줍니다.

JDBC 드라이버 버전 파라미터 이름 파라미터 유형 기본값 가능한 값 연결 문자열 예제
v2 LogLevel 선택 0 0~6 LogLevel=6;
v3 LogLevel 선택 TRACE OFF, ERROR, WARN, INFO, DEBUG, TRACE LogLevel=INFO;

쿼리 ID 검색

버전 2 드라이버에서는 #getPReparedQueryId#getQueryId라는 두 가지 메서드가 있는 인터페이스인 com.interfaces.core.IStatementQueryInfoProvider에 대해 Statement 인스턴스를 언래핑합니다. 이러한 메서드를 사용하여 실행된 쿼리의 쿼리 실행 ID를 얻을 수 있습니다.

버전 3 드라이버에서 com.amazon.athena.jdbc.AthenaResultSet 인터페이스에 대한 Statement, PreparedStatementResultSet 인스턴스를 언래핑합니다. 인터페이스에는 #getQueryExecutionId라는 하나의 메서드가 있습니다.