谷歌数据流写入大查询表性能

Posted

技术标签:

【中文标题】谷歌数据流写入大查询表性能【英文标题】:google dataflow write to bigquery table performance 【发布时间】:2015-04-16 21:01:57 【问题描述】:

我比较了处理数据和输出到 Bigquery 表和文件的性能,差异很大:

输入:来自大约 600 个文件的 150 万条记录 转换:构造/转换每条记录中的一些字段,构造一个键并发出键值对;最终每个键的记录都会转到一个目标、文件或表;

写入 13 个文件耗时 7 分钟,写入 13 个 bigquery 表耗时超过 60 分钟;

尝试了解这是预期的结果还是我没有做对?写入 bigquery 表时应考虑哪些因素?

请帮忙,这可能是我正在尝试做的事情的阻碍。

【问题讨论】:

您能否提供有关如何将输出写入 GCS 和 BigQuery 的更多详细信息?你在使用写转换吗?您是否使用 13 个不同的写入转换实例来控制要写入的文件和表的数量? 【参考方案1】:

对于批处理作业,Dataflow 通过将数据写入 GCS,然后运行 ​​BigQuery 作业将数据导入 BigQuery 来将数据导入 BigQuery。如果您想知道 BigQuery 作业需要多长时间,我认为可以查看您项目中运行的 BigQuery 作业。

您可以尝试以下命令来获取有关您的 BigQuery 导入作业的信息。

  bq ls -j <PROJECT ID>:

上面的命令应该会显示一个工作列表和诸如持续时间之类的东西。 (注意项目ID末尾的冒号我认为冒号是必需的)。

你可以试试

bq show -j <JOB ID>

获取有关工作的更多信息。

请注意,您必须是项目的所有者才能查看其他用户运行的作业。这适用于 Dataflow 运行的 BigQuery 作业,因为 Dataflow 使用服务帐号。

【讨论】:

很高兴知道!在这种情况下,我可以直接写入 GCS 并运行我自己的 Bq 作业以加载到 BigQuery 表,感谢 Jerermy! 这正是我们所做的——写入 GCS 并使用 bq 工具加载数据。见我之前的帖子:goo.gl/mbGDzV

以上是关于谷歌数据流写入大查询表性能的主要内容,如果未能解决你的问题,请参考以下文章

谷歌数据流在 Windows 之间共享资源

google大查询sql中的性能增强

TimescaleDB VS TDengine:写入性能和查询性能是 TDengine 的 1/61/28

走进大数据丨Impala是什么

谷歌分析查询性能和历史数据

大数据在成本和性能方面适合频繁写入数据还是频繁读取数据?