2017-09-02 207 views
2

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

如果没有这样的功能,Dataflow如何在应用程序中挑选热门数据集,特别是如果您有多个热门数据集,并且您想根据数据集的重要性优先缓存?

回答

2

数据流与Spark的执行模型非常不同。在Spark中,中心概念是RDD,RDD的典型工作模式是以不可预知的方式交互式查询;因此,RDD需要缓存,可能由用户控制。

在数据流(Apache的束)中,中央的概念是一个Pipeline,建造和优化,为单片整体,其中PCollection(最接近的类似物RDD)仅仅是在管道中的逻辑节点执行。

这两种方法都有它们的优点,但Dataflow的方法使Dataflow知道在管道中如何使用PCollection,因此不存在不可预测性,并且不需要缓存策略。

数据流当前在Google云端存储的临时文件中实现了一些中间PCollection s,尽量避免使用fusion进行实现。如果PCollection已实现,则处理此集合的管道阶段需要从云存储中读取;否则(如果舞台与产生数据集的舞台融合),它将在数据集内存中处理元素,立即生成它们,共同位于产生它们的工作人员。

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

+0

感谢尤金的回应。这是一个巨大的断言:“不存在不可预测性......”;这使得该平台适用于实时系统。请您告诉我是否可以在任何研究出版物(例如Flume或Millwheel)中找到有关可预测性的更多信息。主要的问题是我们没有任何控制调整部分,除了选择具有更大内存的实例类型。如何基于输入数据集创建成本模型?只有实验?我如何说服我的客户我的Dataflow模型是经过优化的并且具有成本效益?谢谢。 – AmirCS

+1

嗯我的意思只是,集合的访问模式是可预测的,就像SQL数据库在执行查询之前知道整个查询计划一样。还有很多其他的不可预测性:数据大小和分布,用户代码处理持续时间等。“为什么光束几乎没有暴露任何调谐旋钮”是一个很好的问题,但超出了评论的范围,随意提出一个单独的SO问题:) – jkff