首页 > 解决方案 > BigQuery 数据仓库设计?

问题描述

在 Datawarehouse 的典型 HDFS 环境中,我看到了一些不同的阶段,在这些阶段中,数据被分阶段和转换,如下所示。我正在尝试在 Google 云平台中设计一个系统,我可以在其中执行所有这些转换。请帮忙。

HDFS:: Landing Zone -> Stage 1 Zone -> Stage 2 Zone

Landing Zone - 用于获取原始数据 Stage 1 Zone - 来自 Landing zone 的原始数据被转换,然后更改为不同的数据格式和/或非规范化并存储在 Stage 1 Stage 2 Zone - 来自阶段 1 的数据在事务表说 HBASE。如果只是一个时间段数据,那么仍然是基于 HDFS 的 HIVE 表然后,从第 2 阶段开始进行报告(如果进行转换,则中间也可能有多个区域)

我在 Google Cloud 中实施的思考过程::

登陆(谷歌云存储)-> 第 1 阶段(BigQuery - 托管所有基于时间的数据)-> 第 2 阶段(BigQuery 用于基于时间的数据/维护大表用于基于键的事务数据)

我的问题如下:

a) 这个实现看起来是否现实。我打算使用 Dataflow 在这些区域之间进行读取和加载?如果有人以前实施过一个设计来建造仓库,那将是一个更好的设计吗?

b) 使用 Dataflow 读取 Big Query 然后更新 Big table 的效果如何?我在这里看到了一些用于大表更新的数据流连接器

c) 由于 BigQuery 支持,Json 数据可以用作主要格式吗?

标签: google-bigquerygoogle-cloud-dataflowdataflowbigtable

解决方案


  1. 有一个可能适合您的方案的解决方案。我会将数据加载到 Cloud Storage,读取它并使用 Dataflow 进行转换,然后将其发送到 Cloud Storage 以在之后加载到 Bigquery 和/或使用您提到的 Dataflow 连接器直接写入 BigTable。
  2. 正如我之前提到的,您可以将转换后的数据从 Dataflow 发送到两个数据库。请记住,BigQuery 和 Bigtable非常适合分析,但是,Bigtable 具有低延迟的读取和写入访问权限,而 BigQuery 具有较高的延迟,因为它执行查询作业来收集数据。
  3. 是的,这将是一个好主意,因为您可以将JSON 数据从 Cloud Storage 直接加载到 BigQuery。

推荐阅读