3

我正在创建一项服务,允许用户对 bigquery 数据应用过滤器并将其导出为 csv 或 json。有没有办法可以估计时间,bigquery 将花费导出一组行。

目前,我正在记录完成导出作业的行数和时间。然后我用导出单行的平均时间来估计时间。但这肯定不是线性问题。

任何关于预测算法的建议也会很棒。

4

1 回答 1

1

不幸的是,没有一个很好的方法来预测出口需要多长时间。有很多因素:

  • 您的表被分解成多少数据“碎片”。这与您的数据的可压缩性有关,并且在某种程度上与您如何将表加载到 bigquery 中有关。只要您将“glob”路径作为提取目标(例如 gs://foo/bar/baz*.csv),BigQuery 就会尝试并行提取。
  • 表的大小。
  • 并发运行的提取作业的数量。整体系统负载越高,可用于提取作业的资源就越少。

由于这些因素中的大多数都不是您真正能够控制的,因此最佳做法是:

  • 始终将 glob 路径作为目标路径传递,以便 bigquery 可以并行提取。
  • 如果您的表很小,您可以使用 tabledata.list 来提取数据而不是导出。

请注意,在我们正在努力解决的提取性能方面,有几个未解决的错误。

于 2014-09-15T16:59:17.270 回答