Python:如何快速上传到 Google BigQuery?

Posted

技术标签:

【中文标题】Python:如何快速上传到 Google BigQuery?【英文标题】:Python: How to quickly upload to Google BigQuery? 【发布时间】:2017-07-07 15:57:49 【问题描述】:

我跟踪了大约 250,000 个时间序列文件,这些文件已上传到 Google bigquery。每个时间序列每天都有大约 200 条新行,应该通过一些 API 下载,然后上传到 bigquery。我已经设置了一个 python 脚本,它首先连接到 Google BigQuery 以获取每个时间序列的最后日期,然后该脚本使用多处理创建 10 个进程,每个进程都连接到一些 API 并下载丢失的数据。下载完成后,大约需要 2 秒,我需要将数据放入BigQuery。我目前使用名为to_gbqpandas 函数上传数据,并计算了上传需要多长时间,结果如下:

  1,000 rows takes  45 seconds
 10,000 rows takes  52 seconds
100,000 rows takes 128 seconds

因此,基于此,我正在考虑在内存中附加一个大的dataframe,然后在dataframe 达到100,000 行时使用to_gbq。有人建议我找到一个不依赖于内存的解决方案全部,并在下载数据后立即将该数据上传到bigquery。有什么好的方法可以解决这个问题?

我将所有下载的数据附加到同一个表中。

【问题讨论】:

【参考方案1】:

我建议使用Apache Beam 来解决这个问题。它已经是一个分布式处理框架,旨在处理此类 ETL 任务。

阅读此example 将使您很好地掌握如何使用它。您也可以使用Dataflow Templates 或Apache Airflow 来安排您的管道执行。

【讨论】:

以上是关于Python:如何快速上传到 Google BigQuery?的主要内容,如果未能解决你的问题,请参考以下文章

将文件从 Google Cloud 自动上传到 Big Query

如何在每次上传桶时更新Big Query后端数据

将数据流从 Google Cloud Storage 流式传输到 Big Query

如何以 CSV 表格格式将原始数据源从 Google Big Query 导出到 R 服务器?

Google BigQuery:将 ExecuteQuery 结果以 json 格式上传到 Google Cloud Storage

如何在使用 Python (PyCharm) 查询 Google Big Query 时修复 CERTIFICATE_VERIFY_FAILED 错误