2014-09-11 104 views
0

我有/hadoop/hdfs/location1中的6000+ .csv文件和/hadoop/hdfs/location2中的6100+ .csv文件。2 Hdfs文件比較

我想比較這兩個hdfs目錄並找到文件的差異。 diff .csv文件(不相似)應該反映在第三個hdfs目錄中(/hadoop/hdfs/location3)。我不確定我們可以使用diff命令,如同在unix中的hdfs文件系統一樣。

關於如何解決這個問題的任何想法都是可觀的。

Anshul

+0

diff命令爲您提供了有序的差異,以便內容明智的,你應該要小心在文件比較中使用它。例如讓文件X有三行,每行分別有A,B,C。第二個文件Y有C B A. Diff會給你說文件是不同的,但實際上從記錄的角度來看內容是相同的。 – 2016-12-26 16:32:07

回答

0

你可以使用一些Python(的Perl /等)腳本來檢查它。根據您的特殊需求和速度,您可以先檢查文件大小。文件名是否一致?創作日期是否相同?

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

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

我想下面的步驟將解決您的問題:

  1. 獲取這是在第一個位置到一個文件的文件名列表
  2. 獲取第二位置上的文件到另一個文件
  3. 使用unix命令找到兩個文件之間的差異
  4. 無論您找到哪個diff文件,都要將這些文件複製到其他位置。

我希望這可以幫助你。否則讓我知道。

0

看看下面的帖子裏面提供了有關如何比較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;