gpt4 book ai didi

java - 查询执行时间与完成 Java 查询调用之间的差异

转载 作者:行者123 更新时间:2023-12-04 14:39:47 24 4
gpt4 key购买 nike

上下文

  • 我们的容器集群位于@us-east1-c
  • 我们使用以下 Java 库:google-cloud-bigquery,0.9.2-beta
  • 我们的数据集大约有 2600 万行,约占 10G
  • 我们所有的查询都返回少于 100 行,因为我们总是在特定列上分组

问题

我们分析了 BigQuery 中执行的最后 100 个查询,这些都是在大约 2-3 秒内执行的(我们通过调用 bq --format=prettyjson show -j JOBID 分析了这一点,结束时间- 创建时间)。

但在我们的 Java 日志中,大多数对 bigquery.query 的调用都阻塞了 5-6 秒(10 秒并不罕见)。什么可以解释在 BigQuery 集群中完成的查询与在 Java 中可用的结果之间的系统性差距?我知道 5-6 秒不是天文数字,但我很好奇这是否是使用 Java BigQuery 云库时的正常行为。

我没有深入到使用 Wireshark 分析出站调用的地步。我们所有的测试都在我们的容器集群 (Kubernetes) 中执行。

代码

QueryRequest request = QueryRequest.newBuilder(sql)
.setMaxWaitTime(30000L)
.setUseLegacySql(false)
.setUseQueryCache(false)
.build();

QueryResponse response = bigquery.query(request);

谢谢

最佳答案

这里简单看一下代码: https://github.com/GoogleCloudPlatform/google-cloud-java/blob/master/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java

似乎有多种潜在的延迟来源:

  • 获取查询结果
  • 重新启动(那里有一些自动重新启动可以解释延迟尖峰)
  • 检查新结果的频率

听起来好像查看 Wireshark 会为您提供正在发生的事情的准确答案。

关于java - 查询执行时间与完成 Java 查询调用之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43410691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com