Beam direct-runner 慢速 BigQuery 读取
Posted
技术标签:
【中文标题】Beam direct-runner 慢速 BigQuery 读取【英文标题】:Beam direct-runner slow BigQuery read 【发布时间】: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 列(不是很多!) 你使用直接亚军吗? 【参考方案1】:默认情况下BigQueryIO
使用BATCH
优先级。批处理模式查询由 BigQuery 排队。这些在空闲资源可用时立即启动,通常在几分钟内。
您可以将优先级显式设置为INTERACTIVE
。
p.apply("BigQuery data load", BigQueryIO.readTableRows()
.withQueryPriority(BigQueryIO.TypedRead.QueryPriority.INTERACTIVE)
.usingStandardSql()
.fromQuery(BG_SELECT)
.withoutValidation()
.withoutResultFlattening())
交互模式允许 BigQuery 尽快执行查询。
【讨论】:
以上是关于Beam direct-runner 慢速 BigQuery 读取的主要内容,如果未能解决你的问题,请参考以下文章
第二次使用 Dataflow 从 Big Query 中提取数据的问题 [apache beam]
使用 Apache Beam 反序列化 Kafka AVRO 消息
Apache Beam - 将 BigQuery TableRow 写入 Cassandra