Google 云数据流 ETL(数据存储 -> 转换 -> BigQuery)

Google Cloud Dataflow ETL (Datastore -> Transform -> BigQuery)

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

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

我的问题是

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

问题是这两种方法可行吗?哪个更划算?还有比以上两种更好的方法吗?

谢谢,

里兹塔克

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

您的两种方法都应该有效——我更喜欢第二种方法,即使用批处理管道移动现有数据,然后使用流式管道通过云处理新数据 Pub/Sub .除了数据移动之外,Dataflow 还允许对数据本身执行任意 analytics/manipulation。

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