AWS SDK for Java 2.0提供了适用于Athena的客户端库。以下是使用AthenaClient执行查询并处理返回结果的示例:
import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.athena.AthenaClient;
import software.amazon.awssdk.services.athena.model.*;
import java.util.List;
import java.util.concurrent.ExecutionException;
public class AthenaQueryExample {
private static final String ATHENA_DB = "your-database-name";
private static final String ATHENA_OUTPUT_BUCKET = "s3://your-bucket-name/your-folder-name/";
private static final String ATHENA_QUERY_STRING = "SELECT count(*) FROM your-table-name WHERE your-column-name = 'your-value'";
public static void main(String[] args) {
// create Athena client
AthenaClient athenaClient = AthenaClient.builder()
.credentialsProvider(DefaultCredentialsProvider.create())
.region(Region.US_WEST_2)
.build();
// setup query execution request
StartQueryExecutionRequest startQueryExecutionRequest = StartQueryExecutionRequest.builder()
.queryString(ATHENA_QUERY_STRING)
.queryExecutionContext(QueryExecutionContext.builder().database(ATHENA_DB).build())
.resultConfiguration(ResultConfiguration.builder().outputLocation(ATHENA_OUTPUT_BUCKET).build())
.build();
// execute query and get query execution ID
String queryExecutionId = athenaClient.startQueryExecution(startQueryExecutionRequest).queryExecutionId();
// setup query results request
GetQueryResultsRequest getQueryResultsRequest = GetQueryResultsRequest.builder()
.queryExecutionId(queryExecutionId)
.build();
// poll query status until query completes
boolean isQueryStillRunning = true;
while (isQueryStillRunning) {
GetQueryExecutionRequest getQueryExecutionRequest = GetQueryExecutionRequest.builder().queryExecutionId(queryExecutionId).build();
QueryExecution queryExecution = athenaClient.getQueryExecution(getQueryExecutionRequest).queryExecution();
String queryState = queryExecution.status().state();
if (queryState.equals(QueryExecutionState.FAILED.toString())) {
throw new RuntimeException("Athena