2016-01-27 54 views
5

我是一个新手,试图了解我们可能会重新写一批ETL过程到谷歌数据流。我读过一些文档,运行几个例子。复杂的加入谷歌数据流

我建议新的ETL过程由商业事件驱动(即源PCollection)。这些将触发该特定商业实体的ETL过程。 ETL过程将从源系统中提取数据集,然后将这些结果(PCollections)传递到下一个处理阶段。处理阶段将涉及各种类型的联合(包括笛卡尔和非关键联结,例如日期结合)。

所以一对夫妇的问题在这里:

(1)是我提议有效&有效的办法?如果不是更好,我还没有看到任何关于使用Google Dataflow的真实复杂ETL过程的演示,只有简单的场景。

是否有更适合的“更高级”ETL产品?我一直在关注Spark和Flink。

我们目前的ETL虽然只有大约30个核心表(经典的EDW维度和事实)以及〜1000个转换步骤,但是中等复杂。源数据很复杂(大约150个Oracle表)。

(2)复杂的非关键连接,这些如何处理?

我明显被Google Dataflow吸引,因为它首先是一个API,并行处理功能看起来非常合适(我们被要求从批处理过夜转移到增量处理)。

这个用例的数据流的一个很好的例子会真正推动采用!

谢谢, 迈克小号

回答

6

这听起来像数据流将是一个不错的选择。我们允许您编写一个管道,该管道需要执行业务事件的PCollection并执行ETL。管道可以是批处理(定期执行)或流式处理(只要输入数据到达就执行)。

各种联接大部分在Dataflow中都比较明显。对于直角坐标产品,可以使用side inputs来查看PCollection的内容,作为处理另一个PCollection中的每个元素的输入。

你也可以看看使用GroupByKeyCoGroupByKey来实现连接。这些扁平化多个输入,并允许在同一个地方使用同一个键访问所有值。您还可以使用Combine.perKey来计算与键关联的所有元素(例如,SUM,MIN,MAX,AVERAGE等)的关联和交换组合。

日期结合加入声音好像它们很适合windowing,它允许您编写一个消耗数据窗口的管道(例如,小时窗,每日窗,每天滑动的7天窗等等)。 )。


编辑:提起GroupByKeyCoGroupByKey