【问题标题】:Google Cloud Dataflow ETL (Datastore -> Transform -> BigQuery)Google Cloud Dataflow ETL(数据存储区 -> 转换 -> BigQuery)
【发布时间】:2015-10-31 00:20:17
【问题描述】:

我们有一个在 Google App Engine 上运行的应用程序,它使用 Datastore 作为持久性后端。当前应用程序主要具有“OLTP”功能和一些基本报告。在实施报告时,我们发现使用 Datastore 和 GQL 处理大量数据(数百万个对象)非常困难。为了通过适当的报告和商业智能功能增强我们的应用程序,我们认为最好设置一个 ETL 流程来将数据从 Datastore 移动到 BigQuery。

最初我们考虑将 ETL 流程实现为 App Engine cron 作业,但看起来 Dataflow 也可以用于此目的。我们对设置流程有以下要求

  • 能够使用非流式将所有现有数据推送到 BigQuery BigQuery 的 API。
  • 完成上述操作后,在更新/创建任何新数据时推送任何新数据 使用流式 API 将数据存储到 BigQuery。

我的问题是

  1. Cloud Dataflow 是否适合实施此管道?
  2. 我们能否推送现有数据?有些种类有 数以百万计的对象。
  3. 应该采用什么正确的方法来实施它?我们正在考虑两种方法。 第一种方法是通过 pub/sub,即为现有数据创建一个 cron 作业并将所有数据推送到 pub/sub。对于任何新的更新,将数据推送到 pub/sub,同时在 DataStore 中进行更新。 Dataflow Pipeline 将从 pub/sub 中选择它并将其推送到 BigQuery。 第二种方法是在 Dataflow 中创建一个批处理管道,该管道将查询 DataStore 并将任何新数据推送到 BigQuery。

问题是这两种方法可行吗?哪一个在成本方面更好?有没有比以上两种更好的方法?

谢谢,

rizTaak

【问题讨论】:

    标签: google-app-engine google-bigquery google-cloud-datastore google-cloud-dataflow


    【解决方案1】:

    Dataflow 绝对可以用于此目的。事实上,Dataflow 的可扩展性应该使该过程快速且相对容易。

    您的两种方法都应该有效 - 我会优先使用第二种方法,即使用批处理管道移动现有数据,然后使用流管道通过 Cloud Pub/Sub 处理新数据。除了数据移动之外,Dataflow 还允许对数据本身执行任意分析/操作。

    也就是说,BigQuery 和 Datastore 可以直接连接。例如,请参阅 BigQuery 文档中的 Loading Data From Cloud Datastore

    【讨论】:

    • 使用数据存储备份工具的“自动”解决方案依赖于文件 API,该 API 将在几天后关闭。今天暂时关闭了。因此,似乎 Dataflow 将成为实现这一点的 go_to 解决方案。我看到这些示例提供了写入 BigQuery 的信息,但是我们应该在哪里寻找从 Datastore 读取的示例?我找到了文档,并将从中工作,但是使用 Dataflow 的 Datastore -> BigQuery 的完整示例将非常有帮助。谢谢!
    • 可以在我们的cookbook 示例中找到从 Datastore 读取的示例。将其与 BigQuery 示例配对应该很简单。
    猜你喜欢
    • 2018-01-19
    • 1970-01-01
    • 2022-09-26
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 2017-12-14
    • 2019-10-12
    相关资源
    最近更新 更多