如何获得 BQ 文件加载的进度

Posted

技术标签:

【中文标题】如何获得 BQ 文件加载的进度【英文标题】:How to get progress on BQ file load 【发布时间】:2017-03-29 21:12:37 【问题描述】:

将大型 csv(或其他类型)文件导入 BigQuery 时,如何获取导入进度?例如,如果我们有一个 1TB 的文件并使用 import csv 命令,我不想等待十个小时来导入文件。我们如何才能取得进展,或者这是不可能的?

https://cloud.google.com/bigquery/loading-data

现在,在加载 csv 文件之前,我们无法获取它


关于进度条:

在任务进行时,永远不会返回特定于加载任务的统计信息。统计信息仅包含开始/结束时间,Java API 将其解析为 CopyStatistics 类。


 "kind": "bigquery#job",
 "etag": "\"smpMas70-D1-zV2oEH0ud6qY21c/crKHebm6x2NXA6pCjE8znB7dp-E\"",
 "id": "YYY:job_l9TWVQ64YjKx7BgDufu2gReMEL0",
 "selfLink": "https://www.googleapis.com/bigquery/v2/projects/YYY/jobs/job_l9TWVQ64YjKx7BgDufu2gReMEL0",
 "jobReference": 
  "projectId": "YYY",
  "jobId": "job_l9TWVQ64YjKx7BgDufu2gReMEL0"
 ,
 "configuration": 
  "load": 
   "sourceUris": [
    "gs://datadocs/afdfb50f-cbc2-47d4-985e-080cadefc963"
   ],
   "schema": 
    "fields": [
       ...
    ]
   ,
   "destinationTable": 
    "projectId": "YYY",
    "datasetId": "1aaf1682dbc2403e92a0a0ed8534581f",
    "tableId": "ORIGIN"
   ,
   "createDisposition": "CREATE_IF_NEEDED",
   "writeDisposition": "WRITE_EMPTY",
   "fieldDelimiter": ",",
   "skipLeadingRows": 1,
   "quote": "\"",
   "maxBadRecords": 1000,
   "allowQuotedNewlines": true,
   "sourceFormat": "CSV"
  
 ,
 "status": 
  "state": "RUNNING"
 ,
 "statistics": 
  "creationTime": "1490868448431",
  "startTime": "1490868449147"
 ,
 "user_email": "YYY@appspot.gserviceaccount.com"

只有在整个 CSV 文件被导入后,最后才会返回负载统计信息。


我们如何在上传时获得进度?

【问题讨论】:

【参考方案1】:

查看statistics.load.outputBytes

根据文档 - 当加载作业处于运行状态时,此 值可能会改变

您可以尝试一下 - 如果可以通过调用 Jobs: get 将其用作进度指标

【讨论】:

不,这似乎不起作用——请查看更新后的问题。 我刚刚尝试了小得多的文件并获得了相同的体验,但认为这可能是因为文件小 - 希望这对于 1TB 文件会有所不同。感谢您更新结果!我认为文档中提到的change 要么不正确(不太可能),要么与多文件加载场景相关——当我们加载文件时,从来没有机会像在我的环境中那样玩这个(当我们移动到时不再那么频繁了)流)我们确保它们最大为 256MB,然后在我们这边处理进度

以上是关于如何获得 BQ 文件加载的进度的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery 从 bq 命令行工具加载数据 - 如何跳过标题行

BQ 加载带有数组数组的 JSON 文件

BQ 加载:加载过程中收到“意外错误”,没有额外输出

Bq 命令或数据流按原样加载

如何找到内核加载的RTC模块?

使用 bq load 加载带有 NULL 列的 CSV