【问题标题】:Beam direct-runner slow BigQuery readBeam direct-runner 慢速 BigQuery 读取
【发布时间】:2017-10-24 10:08:39
【问题描述】:

我有一个非常简单的过程,第一步是读取 BigQuery 表

p.apply("BigQuery data load", BigQueryIO.read().usingStandardSql().fromQuery(BG_SELECT).withoutValidation().withoutResultFlattening())

这一步大约需要 2/3 分钟 来执行(大约 1000 行检索)! 当我查看 BigQuery 时,我看到多行链接到我的查询

10:54:37.703 BigQuery delete temp_
10:54:37.244 BigQuery delete temp_
10:54:35.492 BigQuery jobcompleted
10:54:34.802 BigQuery insert jobs 
10:54:22.081 BigQuery jobcompleted
10:52:33.812 BigQuery insert jobs 
10:52:33.106 BigQuery insert datas
10:52:32.410 BigQuery insert jobs 

这 2 分钟完成作业正常吗? (我在 bigquery 上没有并行活动)

我怎样才能获得更好的(正常!)性能?

【问题讨论】:

  • 也许您的查询很复杂?
  • 查询很简单。这只是一个简单的选择,没有任何过滤/加入/分组...
  • 多少列?
  • 5 列(不是很多!)
  • 你使用直接亚军吗?

标签: google-bigquery apache-beam


【解决方案1】:

默认情况下BigQueryIO 使用BATCH 优先级。批处理模式查询由 BigQuery 排队。这些在空闲资源可用时立即启动,通常在几分钟内。

您可以将优先级显式设置为INTERACTIVE

p.apply("BigQuery data load", BigQueryIO.readTableRows()
    .withQueryPriority(BigQueryIO.TypedRead.QueryPriority.INTERACTIVE)
    .usingStandardSql()
    .fromQuery(BG_SELECT)
    .withoutValidation()
    .withoutResultFlattening())

交互模式允许 BigQuery 尽快执行查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多