BigQueryIO 读取与 fromQuery

2024-01-08

假设在 Dataflow/Apache Beam 程序中,我正在尝试读取数据呈指数增长的表。我想提高读取的性能。

BigQueryIO.Read.from("projectid:dataset.tablename")

or

BigQueryIO.Read.fromQuery("SELECT A, B FROM [projectid:dataset.tablename]")

如果我只选择表中所需的列,而不是上面的整个表,我的读取性能会提高吗?

我知道选择很少的列可以降低成本。但想知道上面的读取性能。


你是对的,它会降低成本,而不是引用 SQL/查询中的所有列。另外,当您使用from()代替fromQuery(),您无需为 BigQuery 中的任何表扫描付费。我不确定你是否意识到这一点。

在幕后,每当 Dataflow 从 BigQuery 读取数据时,它实际上会调用其导出 API 并指示 BigQuery 将表作为分片文件转储到 GCS。然后 Dataflow 将这些文件并行读取到您的管道中。它不会“直接”从 BigQuery 准备就绪。

因此,是的,这个might提高性能,因为需要在后台导出到 GCS 并读入管道的数据量将会减少,即更少的列 = 更少的数据。

但是,我也会考虑使用分区表,然后甚至考虑对它们进行集群。另外,使用WHERE子句以进一步减少要导出和读取的数据量。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BigQueryIO 读取与 fromQuery 的相关文章

随机推荐