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_gbq
的pandas
函数上传数据,并计算了上传需要多长时间,结果如下:
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
将数据流从 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 错误