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