【问题标题】:AWS Athena ClientExecutionTimeoutExceptionAWS Athena ClientExecutionTimeoutException
【发布时间】: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


    【解决方案1】:

    通过修复这些行修复了上述问题

    .withClientConfiguration(buildClientConfig().withClientExecutionTimeout(5000));

     private ClientConfiguration buildClientConfig() {
      ClientConfiguration clientConfiguration = new ClientConfiguration();
      clientConfiguration.setProxyHost("host");
      clientConfiguration.setProxyPort(port);
      clientConfiguration.setProxyUsername("");
      clientConfiguration.setProxyPassword("");
      clientConfiguration.setPreemptiveBasicProxyAuth(false);
      clientConfiguration.setConnectionTimeout(2000);
      clientConfiguration.setRequestTimeout(2000);
      return clientConfiguration;
    

    }

    【讨论】:

      猜你喜欢
      • 2021-02-02
      • 2018-01-28
      • 2020-06-27
      • 2017-10-19
      • 2018-11-06
      • 1970-01-01
      • 2020-09-12
      • 2021-12-22
      • 2021-04-22
      相关资源
      最近更新 更多