在Dataflow中缓存数据集

时间:2017-09-02 00:22:52

标签: google-cloud-platform google-cloud-dataflow

我想知道我是否可以直接在Google Dataflow平台中缓存数据集(比如在Spark中缓存RDD)。

如果没有此类功能,Dataflow如何在应用程序中选择热门数据集,特别是如果您有多个热门数据集,并且您希望根据数据集的重要性确定缓存的优先级?

1 个答案:

答案 0 :(得分:3)

Dataflow与Spark的执行模型截然不同。在Spark中,核心概念是RDD,使用RDD的典型模式是以不可预测的方式以交互方式查询它。因此,RDD需要缓存,可能由用户控制。

在Dataflow(Apache Beam)中,中心概念是Pipeline,构建和优化并作为整体整体执行,其中PCollection(最接近RDD的模拟)仅仅是一个逻辑节点管道。

这两种方法都有其优点,但使用Dataflow的方法,Dataflow确切知道如何在管道中使用PCollection,因此不会涉及不可预测性,也不需要缓存策略。 / p>

数据流目前在Google云端存储上的临时文件中实现了某些中间PCollection,尝试使用fusion尽可能避免实现。如果实现了PCollection,那么处理此集合的管道阶段将需要从云存储中读取它;否则(如果阶段与产生数据集的阶段融合),它将在内存中处理数据集的元素,在生成它们的同时,共同位于生成它们的工作者上。

GroupByKey操作等(例如Combine)是特殊的:Dataflow有几个GroupByKey的实现,批处理和流管道之间有所不同;他们要么在VM上使用本地磁盘来存储数据,要么使用high-performance Google internal infrastructure