首页 > 解决方案 > Google Big Query 最快的本地保存方式

问题描述

目前我的代码如下:

query_job = bqClient.query(query)
iterator = query_job.result(timeout=600)
rows = list(iterator)
df =  pd.DataFrame(data=[list(x.values()) for x in rows], columns=list(rows[0].keys()))
df.to_csv("x.csv")

有没有办法直接将迭代器保存为 csv?做我在数百万行上做的事情有点慢。

标签: google-bigquery

解决方案


根据您的问题,您的问题与性能有关。因此,我想请您注意 to_csv方法的最后一行代码。它有一些在您的情况下可能有用的可选参数,我建议您使用chunksize。此参数定义一次写入的行数,您可以在此处阅读更多信息。如果您愿意,还可以查看第 1555 行,该行显示了在未定义此参数时如何将其设置为 1,这可能会导致性能下降。最后,我鼓励您查看“模式”参数,该参数也可以在上述文档中找到,此处描述了每种分类模式。

作为奖励信息,我想建议您也可以将Cloud Functions与 Pub/Sub & StackDriver Trigger 和 BigQuery 一起使用,以将您的.csv文件保存到 Cloud Storage。


推荐阅读