我在hdfs中有大约6TB的数据分区为hdfs:// products / yyyy / mm / dd / hh 我们称之为dataset1。 我每天的数据大小约为5GB,我可以根据连接条件将其称为数据集2,我需要将其插入/更新到6TB中。
我想要实现的任务是
我需要使用Spark来实现这一点,我的问题是,每天只读6TB才能找到5GB大小文件中的客户ID。
您能否使用Spark建议替代合并模式?
答案 0 :(得分:0)
像这样的“大数据”用例的体系结构可能是一本书的主题。
事实上,它是以前由Twitter发起的Nathan Marz的大数据。详细了解他的Lambda架构here。
在一个非常高,过于简单的层面上,我们的想法是将所有原始数据(事实来源)放在“批处理层”(例如 HDFS)中,运行分析(例如与Spark)预先计算“批处理视图” - 实质上是数据索引 - 到“服务层”,然后通过运行分析,创建视图,最终在“速度层”中处理新数据将这些数据与批处理和服务层合并。
这似乎是你应该根据自己的情况考虑的那种架构。
基于流媒体而不是批处理的更简单的方法是Jay Kreps(前身为LinkedIn)的Kappa Architecture。我实际上更喜欢Kappa架构,但如果您没有实时数据流,则不适用。
我认为你应该得到Nathan的书,并仔细阅读每天到达速度层的最新数据如何与包含数据的服务和批处理层合并到“开始时间”。我提到的资源中的案例研究应该可以帮助您以适合您业务的方式进行设置。