/hadoop/hdfs/location1
中有6000多个.csv文件,/hadoop/hdfs/location2
中有6100+ .csv文件。
我想比较这两个hdfs目录并找到文件的差异。 diff .csv文件(非相似)应反映在第3个hdfs目录(/hadoop/hdfs/location3
)中。我不确定我们是否可以像使用unix到hdfs文件系统那样使用 diff命令。
任何关于如何解决这个问题的想法都会很明显。
Anshul
答案 0 :(得分:1)
请看下面的帖子,它提供了如何比较2个HDFS文件的答案。您需要将其扩展为2个文件夹。
您可以使用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)
我认为以下步骤可以解决您的问题:
我希望这会对你有所帮助。否则请告诉我。
答案 3 :(得分:0)
我们没有hdfs命令来比较文件。 请查看下面的帖子,我们可以通过编写PIG程序来实现,或者我们需要编写Map Reduce Program。