google-bigquery - 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?做我在数百万行上做的事情有点慢。
解决方案
根据您的问题,您的问题与性能有关。因此,我想请您注意 to_csv方法的最后一行代码。它有一些在您的情况下可能有用的可选参数,我建议您使用chunksize。此参数定义一次写入的行数,您可以在此处阅读更多信息。如果您愿意,还可以查看第 1555 行,该行显示了在未定义此参数时如何将其设置为 1,这可能会导致性能下降。最后,我鼓励您查看“模式”参数,该参数也可以在上述文档中找到,此处描述了每种分类模式。
作为奖励信息,我想建议您也可以将Cloud Functions与 Pub/Sub & StackDriver Trigger 和 BigQuery 一起使用,以将您的.csv文件保存到 Cloud Storage。
推荐阅读
- css - 为什么卡从父col溢出
- python - 这些代码有什么区别?为什么它们有不同的输出?
- java - 如何打破方法中的循环
- python - 如何修复 Python 代码中的“无效语法”错误?
- angular - 在构造函数中初始化数组并在 Angular 中传递给地图
- angular - 角度库是否可以使用嵌套的 public_api.ts
- firebase - Firebase 的免费套餐会过期吗?
- c# - 我修改了数据表中的数据。如何将修改后的数据重新放入表中?
- mysql - MySQL INSERT INTO 使用 Jupyter Notebook 错误:语法无效
- android - 如何检查我的应用是否已在 Android 上配置电池优化?