【问题标题】:Processing huge dataset from bigquery using python, load it back to a bigquery table使用 python 处理来自 bigquery 的巨大数据集,将其加载回 bigquery 表
【发布时间】:2019-03-29 18:28:46
【问题描述】:

我在 bigquery 中有一个包含 5000 万行和 57 列的庞大数据集。我想做很多不使用 sql 的过滤/转换/清理。我尝试使用 dask/panda/python 在本地 mac 的 dask 数据框中加载数据,进行转换,然后将数据推送回 bigquery,以便其他 BU 可以使用它。将数据推送回 bigquery 需要 3 个多小时。是否有任何其他方式或谷歌云服务可供我利用?

【问题讨论】:

  • 当提到“将数据推送回 bigquery 需要很长时间”之类的内容时。具体来说,多少MB的数据,多少时间,你的互联网连接速度等等。否则我们不知道什么是“长时间”。
  • 将您的应用迁移到PYTHON ON GOOGLE CLOUD PLATFORM,将中间文件写入Google Cloud Storage 并将BigQuery 指示到load from GCS ?
  • 为什么不想使用 SQL?不要忘记,您也可以将 JavaScript 注入到您的转换中。留在 BigQuery 的好处是您将代码带到数据中,而不是数据到代码中。这具有巨大的优势,即规模和简单性。
  • @GrahamPolley 我们的一些用例很复杂,我们必须为一个指标创建大量临时表。
  • 没关系。您可以使用编排工具在 BigQuery 中执行此操作,例如气流/作曲家。我们一直这样做。一旦您跳出 BigQuery,您的性能就会受到很大影响。

标签: python google-cloud-platform google-bigquery bigdata


【解决方案1】:

如果您在 BigQuery 中有大量数据并希望对其执行转换,则一种可能的解决方案是使用基于 GCP 的称为 Dataflow 的功能。 Dataflow 是 Google 的基于 Apache Beam 的托管服务。使用这项技术,可以编写一个同时使用 BigQuery 作为源和接收器的管道。 Dataflow 专为海量数据处理而设计,可以自动并行化工作。此外,由于它全部在 GCP 中运行,因此在读取或写入数据时没有有意义的延迟,如果您通过 Internet 传输数据可能会发现这种延迟。 Dataflow 允许程序员使用 Java 或 Python 编写转换。

根据您的转变,更高级别(但类似的故事)可能是使用 Google 的 Dataprep 服务。 Dataprep 提供了一种高级(业务级)机制来转换数据,而无需任何编程。使用 Dataprep,可以在更高级别上描述转换,最终自动构建并代表您运行 Datalow 作业。

【讨论】:

  • 数据流听起来很有希望:)
  • 请记住,启动 Dataflow 的成本很高。它始终是我们每月账单上的头等大事之一。
猜你喜欢
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-04
  • 2014-07-09
  • 1970-01-01
  • 1970-01-01
  • 2020-07-10
相关资源
最近更新 更多