2个Hdfs文件比较

时间:2014-09-11 10:42:56

标签: csv hdfs

/hadoop/hdfs/location1中有6000多个.csv文件,/hadoop/hdfs/location2中有6100+ .csv文件。

我想比较这两个hdfs目录并找到文件的差异。 diff .csv文件(非相似)应反映在第3个hdfs目录(/hadoop/hdfs/location3)中。我不确定我们是否可以像使用unix到hdfs文件系统那样使用 diff命令

任何关于如何解决这个问题的想法都会很明显。

Anshul

4 个答案:

答案 0 :(得分:1)

请看下面的帖子,它提供了如何比较2个HDFS文件的答案。您需要将其扩展为2个文件夹。

HDFS File Comparison

您可以使用Java API轻松完成此操作并创建一个小应用程序:

FileSystem fs = FileSystem.get(conf);
chksum1 = fs.getFileChecksum(new Path("/path/to/file"));
chksum2 = fs.getFileChecksum(new Path("/path/to/file2"));
return chksum1 == chksum2;

答案 1 :(得分:0)

您可以使用一些python(perl / etc。)脚本来检查它。根据您的特殊需求和速度,您可以先检查文件大小。文件名是否相同?创作日期是否相同等等?

如果您想使用python,请查看filecmp module

>>> import filecmp
>>> filecmp.cmp('undoc.rst', 'undoc.rst') 
True
>>> filecmp.cmp('undoc.rst', 'index.rst') 
False

答案 2 :(得分:0)

我认为以下步骤可以解决您的问题:

  1. 获取位于第一个位置的文件名列表
  2. 将第二个位置文件存入另一个文件
  3. 使用unix命令查找两个文件之间的差异
  4. 无论您找到哪种差异文件,请将这些文件复制到其他位置。
  5. 我希望这会对你有所帮助。否则请告诉我。

答案 3 :(得分:0)

我们没有hdfs命令来比较文件。 请查看下面的帖子,我们可以通过编写PIG程序来实现,或者我们需要编写Map Reduce Program。

Equivalent of linux 'diff' in Apache Pig