【发布时间】:2018-05-16 04:04:29
【问题描述】:
我正在尝试使用 Java 为 AWS Athena 做 POC。我正在使用https://docs.aws.amazon.com/athena/latest/ug/code-samples.html中给出的示例代码
BasicAWSCredentials awsCredentials = new BasicAWSCredentials("accesskey","secretkey");
private final AmazonAthenaClientBuilder builder = AmazonAthenaClientBuilder.standard()
.withRegion(Regions.US_EAST_1)
.withCredentials(new AWSStaticCredentialsProvider(awsCredentials))
.withClientConfiguration(new ClientConfiguration().withClientExecutionTimeout(5000));
public AmazonAthena createClient()
{
return builder.build();
}
=============================================================
public class StartQueryExample
{
public static void main(String[] args) throws InterruptedException
{
AthenaClientFactory factory = new AthenaClientFactory();
AmazonAthena client = factory.createClient();
String queryExecutionId = submitAthenaQuery(client);
}
private static String submitAthenaQuery(AmazonAthena client)
{
QueryExecutionContext queryExecutionContext = new QueryExecutionContext().withDatabase("DB_Name");
ResultConfiguration resultConfiguration = new ResultConfiguration()
.withOutputLocation("s3://bucket_name/results");
StartQueryExecutionRequest startQueryExecutionRequest = new StartQueryExecutionRequest()
.withQueryString("select * from tablename")
.withQueryExecutionContext(queryExecutionContext)
.withResultConfiguration(resultConfiguration);
StartQueryExecutionResult startQueryExecutionResult = client.startQueryExecution(startQueryExecutionRequest);
return startQueryExecutionResult.getQueryExecutionId();
}
示例表只有 6 行 2 列。 我尝试使用 Boto3 运行代码,它运行良好。
但是当从 Java 运行时,我得到 ClientExecutionTimeoutException:
Exception in thread "main" **com.amazonaws.http.timers.client.ClientExecutionTimeoutException: Client execution did not complete before the specified timeout configuration.**
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleAbortedException(AmazonHttpClient.java:813)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:703)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:667)
at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:649)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:513)
at com.amazonaws.services.athena.AmazonAthenaClient.doInvoke(AmazonAthenaClient.java:813)
at com.amazonaws.services.athena.AmazonAthenaClient.invoke(AmazonAthenaClient.java:789)
at com.amazonaws.services.athena.AmazonAthenaClient.executeStartQueryExecution(AmazonAthenaClient.java:694)
at com.amazonaws.services.athena.AmazonAthenaClient.startQueryExecution(AmazonAthenaClient.java:669)
at com.capitalone.aws.athena.StartQueryExample.submitAthenaQuery(StartQueryExample.java:60)
at com.capitalone.aws.athena.StartQueryExample.main(StartQueryExample.java:32)
我尝试从 Eclipse 运行它,还尝试创建一个 jar 并使用 Athena IAM 角色在 ec2 实例上运行它。
任何帮助都会很有用。
谢谢
【问题讨论】:
标签: java amazon-web-services amazon-athena