我有/hadoop/hdfs/location1
中的6000+ .csv文件和/hadoop/hdfs/location2
中的6100+ .csv文件。2 Hdfs文件比較
我想比較這兩個hdfs目錄並找到文件的差異。 diff .csv文件(不相似)應該反映在第三個hdfs目錄中(/hadoop/hdfs/location3
)。我不確定我們可以使用diff命令,如同在unix中的hdfs文件系統一樣。
關於如何解決這個問題的任何想法都是可觀的。
Anshul
我有/hadoop/hdfs/location1
中的6000+ .csv文件和/hadoop/hdfs/location2
中的6100+ .csv文件。2 Hdfs文件比較
我想比較這兩個hdfs目錄並找到文件的差異。 diff .csv文件(不相似)應該反映在第三個hdfs目錄中(/hadoop/hdfs/location3
)。我不確定我們可以使用diff命令,如同在unix中的hdfs文件系統一樣。
關於如何解決這個問題的任何想法都是可觀的。
Anshul
你可以使用一些Python(的Perl /等)腳本來檢查它。根據您的特殊需求和速度,您可以先檢查文件大小。文件名是否一致?創作日期是否相同?
如果您想使用python,請查看filecmp module。
>>> import filecmp
>>> filecmp.cmp('undoc.rst', 'undoc.rst')
True
>>> filecmp.cmp('undoc.rst', 'index.rst')
False
我想下面的步驟將解決您的問題:
我希望這可以幫助你。否則讓我知道。
我們沒有hdfs命令來比較文件。 查看下面的帖子,我們可以通過編寫PIG程序來實現,或者我們需要編寫Map Reduce程序。
看看下面的帖子裏面提供了有關如何比較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;
diff命令爲您提供了有序的差異,以便內容明智的,你應該要小心在文件比較中使用它。例如讓文件X有三行,每行分別有A,B,C。第二個文件Y有C B A. Diff會給你說文件是不同的,但實際上從記錄的角度來看內容是相同的。 – 2016-12-26 16:32:07