java—以最原始的方式在hadoop中进行数据协调

aurhwmvo  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(294)

我需要在hadoop中基于关键比较进行数据协调。这意味着我将有一个文件夹中的旧数据和较新的数据将放在不同的文件夹。在批处理结束时,我只计划将较新的数据移到旧数据中。数据将是json文件,我必须从中提取密钥。
我正在用hadoop迈出我的第一步,所以我只想用mapreduce程序来完成,即不使用spark、pig、hive等工具。我只想在程序开始时,在创建作业对象之前,检查所有的旧数据,并将所有ID放入一个java hashmap中,该java hashmap可以从mapper任务访问。如果较新的数据中缺少一个键,Map器将输出该键。reducer将关注丢失的id的类别,但这是另一回事。作业完成后,我会将较新的数据移到旧数据的文件夹中。
我唯一觉得有点笨拙的是将这个阶段加载到JavaHashMap对象中。这可能不是最优雅的解决方案,所以我想知道mapreduce模型是否有一些专用的数据结构/功能(在运行第一个map任务之前用hdfs中的所有数据填充一个全局hash map)?

bvhaajcl

bvhaajcl1#

我认为用hashmap解决问题不是个好主意。您可以为您的命令使用很少的输入。取决于输入文件,Map程序可以理解这些数据是否是新的,并使用合适的值来编写它。然后reducer将检查这些数据是否只包含在“newinput”中,并写入这些数据。所以作为工作的结果,你只会得到新的数据。

相关问题