在Spark

时间:2016-09-24 20:54:37

标签: apache-spark

我正在调查将Spark用于每小时生成数百GB数据的项目。我努力让第一步达到最佳状态,尽管感觉它应该很简单!

假设有一个每日进程将数据分成两部分,这两部分都不够小,无法在内存中缓存。有没有办法在单个spark作业中执行此操作,而不必从HDFS加载源数据并解析两次?

说我想写所有" Dog"事件进入新的HDFS位置,以及所有的" Cat"事件进入另一个。只要我指定第一个"写入文件"动作(对于狗),Spark会依次将每个文件加载到RAM中并过滤掉所有的狗。然后,它必须重新解析每个文件以找到猫,即使它可以同时完成两个。它可以加载原始数据的每个分区,并一次性写出该分区的猫狗。

如果数据适合内存,我可以过滤到两种类型的事件,然后缓存,然后执行两次写入。但事实并非如此,而且我无法看到如何在每个分区的基础上制作火花。我研究过API文档,认为我必须遗漏一些东西......

非常感谢任何建议,谢谢!

0 个答案:

没有答案