google-bigquery - 如何调试特定 SQL 偶尔会导致 BigQuery“请求超时。请重试”
问题描述
在过去一周左右,我们以交互模式提交给 BigQuery 的 SQL 子集(每天数千个中的一位数)开始需要数小时而不是数秒。超时作业的 SQL 出现在非常特殊的情况下。我能够通过 BigQuery 控制台中的这两个作业重现该行为:
工作调用(在 5 秒内运行):
Job ID bluecore-qa:US.bquijob_4e0e4662_1639a278fcf
Creation Time May 25, 2018, 9:54:34 PM
Start Time May 25, 2018, 9:54:34 PM
End Time May 25, 2018, 9:54:39 PM
Bytes Processed 176 MB
Bytes Billed 177 MB
Slot Time (ms) 271 K
6 小时后超时的完全相同的 SQL(不到一分钟后运行):
Job ID bluecore-qa:US.bquijob_57c799e2_1639a2852fa
Creation Time May 25, 2018, 9:55:24 PM
Start Time May 25, 2018, 9:55:24 PM
Query Priority Interactive
Job Type State Start Time Duration User Email Bytes Processed Bytes Billed Billing Tier Labels
---------- --------- ----------------- ---------- --------------------- ----------------- -------------- -------------- --------
query FAILURE 25 May 21:55:24 5:59:45 xxxxx
Error encountered during job execution:
Request timed out. Please try again.
请注意,SQL 确实使用了过去对我们造成问题的“IGNORE CASE”(但通常会导致“内部错误”情况)。
有没有办法获取有关该作业的更多信息,以查看第二个作业是否被推回到 BigQuery 调度队列中?(根据 BigQuery StackDriver 统计数据,我们项目的 2000 个插槽限制远低于此限制)。
解决方案
在 BigQuery 中,作业永远不会推回 BigQuery 调度队列(即使在流和交互模式下)。
您可以使用审核日志来获取有关超时的更多详细信息。审核日志记录目前是 Stackdriver 唯一可用的替代方法。
推荐阅读
- java - 为什么不能将 java.util.stream.IntStream 转换为 java.util.stream.Stream
- database - 分层数据库(IMS DB)数据检索方法
- kubernetes - Kubernetes 如何创建一个运行初始化和终止的 sidecar
- regex - 日期的正则表达式没有空格
- c++builder - 保存和恢复画布->笔状态
- image-processing - 如何确定我的图像是亮文本还是暗文本?[LabVIEW]
- css - 将所有 div 定位到以下两层
- ios - 使用 Linkedin SDK iOS 登录
- reactjs - 反应原生:无法解析“@ant-design/icons-react-native/fonts/antoutline.ttf”
- c# - 如何在 C# 中显示一定时间的消息