我正在使用 bigquery.go 库。
在调查某些性能时,我发现从客户端启动的导出(.csv 到 GCS)作业(和仅导出作业)平均需要大约 60 秒,而从 WebGUI 启动的相同作业大约需要 20 秒。这可能是什么原因?
代码如下:
time1 := time.Now()
job_extract, err := extractor.Run(ctx)
if err != nil {
return err
}
status, err = job_extract.Wait(ctx)
if err != nil {
return err
}
if status.Err() != nil {
log.Fatalf("Job failed with error %v", status.Err())
return status.Err()
}
time2 := time.Since(time1)
最佳答案
WEB UI 通常有一个轮询机制来检查作业何时完成,因此您可能会看到更长的时间。通常,导出到 GCS 的文件出现的时间早于作业在 WebUI 中实际完成的时间。
为确保并查看准确的时间,请使用cli 工具
获取最新的作业:
bq ls -j -a --max_results=15
运行它会显示一个包含作业 ID 和相应时间的表格。
jobId Job Type State Start Time Duration
--------------------------------- ---------- --------- ----------------- ----------
bquijob_1864e679_15a84d8878a query SUCCESS 28 Feb 07:11:06 0:00:04
bquijob_770b512_15a84d8122c query FAILURE 28 Feb 07:10:35 0:00:00
bquijob_de0df03_15a84d6a4fa query FAILURE 28 Feb 07:09:02 0:00:00
bquijob_52c4f7d7_15a84d660e6 query FAILURE 28 Feb 07:08:44 0:00:00
bquijob_76a2c1be_15a84d5e769 query FAILURE 28 Feb 07:08:13 0:00:00
bquijob_7f51dde5_15a84d55afb query SUCCESS 28 Feb 07:07:41 0:00:08
bquijob_34f25864_15a84d50503 query SUCCESS 28 Feb 07:07:18 0:00:08
job_Ca0cuRTAjY7MEHAs7vTJMxtVYTs query SUCCESS 28 Feb 07:00:47 0:00:09
job_hHfmcdwyBsPsYF5dDvvOdR1Rmd0 load SUCCESS 28 Feb 07:00:26 0:00:20
job_mkiLf_mFHLKSplGJOtg-XDKzvv4 load SUCCESS 28 Feb 02:52:50 0:00:02
job_3RsPvttxWwv3SzVoOI9Cv_2yWtA query SUCCESS 27 Feb 21:18:40 0:00:08
job_JLsqJO0NEIlKNac6jkDWbwneGMg extract SUCCESS 27 Feb 11:35:04 0:00:17
job_KOS7vKX4aX0FNbK6dibE7cxzcQA query SUCCESS 27 Feb 11:33:44 0:00:37
bquijob_44046bec_15a802f703a query SUCCESS 27 Feb 09:27:48 0:00:07
job_2qQ6YSWeXaP2y2doONQJsIoga3c query SUCCESS 27 Feb 08:53:20 0:00:06
您可以通过这种方式检查提取作业的持续时间。如果您确认确实存在问题,请将此类表格发回您的问题中,因为 Google 工程师迟早会检查它。但如果没有适当的细节,我们只能假设您的测量有误。
关于performance - Bigquery.go 导出作业比 WebGUI 慢得多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42509768/