2015-10-30 47 views
0

我们在集群中拥有5年的数据,并且我们每天都在加载数据。每天添加的数据可能包含重复数据,部分修改后的数据等。处理增量数据 - Hadoop

1。如何处理重复数据 - 应该作为高级编程接口猪,配置单元等的一部分进行处理。

  1. 说出是否有用于查找两个记录之间发生更改的用例,以找出该行的关键字。

建模数据的最佳方式是什么,使用hadoop eco系统组件。

回答

0

如何处理重复数据

这是非常难以从HDFS的原始数据删除重复, 所以我想你的方法是正确的:使用pighive而加载这些数据删除。

说出是否存在用于查找两条记录之间发生更改的用例,以找出该行的关键字。

对于这种情况,您是否意味着两个记录具有相同的密钥?

然后你想捕捉什么样的变化?

+0

感谢您的快速回复。我们想要捕获是否有与记录相关的字段发生变化,并通知利益相关方这种变化 – Nag

0

当你这样说的时候,当你知道密钥时,你需要删除重复项以及两个记录之间的增量,你应该有一些标准,在部分改变的数据的情况下删除哪些数据。

在这两种情况下,您都可以拥有密钥句柄和写入逻辑来删除重复项。 映射减少似乎是一个不错的选择,考虑到基于密钥的并行性,性能和管理能力。大多数情况下,您的要求可以在减速器中处理

+0

感谢您的快速回复。你的意思是应该在每次数据加载时调用map reduce作业,并在存储在hdfs之前处理它 – Nag

+0

井地图减少对hdfs中的数据起作用。更普遍的方式是将其从现有数据库中转换为hdfs,然后使用map reduce对其执行分析。我不确定数据的来源 – Ramzy

+0

我的意思是,mapreduce处理来自hdfs的数据,然后在处理(删除重复项)后将其存储在hdfs中。我正在寻找任何可以缩短开发时间并从而缩短时间的高级抽象。 – Nag

0

看看Sqoop-merge是否适合您的使用案例。

来自文档: 合并工具允许您合并两个数据集,其中一个数据集中的条目应覆盖旧数据集的条目。例如,以最后修改模式运行的增量导入将在HDFS中生成多个数据集,并在每个数据集中出现连续较新的数据。合并工具会将两个数据集“拼合”为一个,为每个主键创建最新的可用记录。

+0

数据源是xml文件,sqoop可以处理 – Nag

+0

@srihay sqoop合并需要数据集的主要id,并将新值覆盖到旧值上。现在,这个值可以是任何东西(XML,JSON,文本等) –