2014-10-17 44 views
2

我想比較hdfs文件與unix文件。我知道使用cat命令的一種方法,我們可以比較文件,因爲cat命令也是由Hadoop分佈式文件系統(HDFS)提供的。如何將hdfs文件與unix文件進行比較?

讓我們舉一個例子:

# hdfs dfs -ls -R /demo 

-rw-r--r-- 3 root hdfs  129617 2014-10-17 12:22 /demo/abc.log 

#ls /tmp 
xyz.log 

在這裏,我想比較abc.logxyz.log。任何更好的方法?

回答

2

你可以使用shell重定向+ diff。

diff <(hdfs dfs -cat /demo/abc.log) <(cat /tmp/xyz.log) 
+0

不使用cat命令背後主要的原因是,當我跑的貓或HDFS上,然後我得到了一些錯誤或警告之類的話,然後讓控制檯上 – ni3 2014-10-18 19:49:28

+0

我想文件內容或預期輸出的任何命令在這種情況下,你可以做一些其他的事情。 您可以將stderr從hdfs命令重定向到/ dev/null。 您可以在運行hdfs時解決警告的原因。 或者你可以使用hadoop庫做一行一行的讀取/比較。 三個'應該'的任何一個工作。 :) – Anthony 2014-10-18 21:54:09

+0

首先感謝您的回覆。 將stderr重定向到/ dev/null並不適用於我的情況,還有關於逐行讀取hadoop庫的情況,因此我需要爲它編寫單獨的java程序,但是我不想要。 基本上我正在編寫python腳本來比較這兩個文件。 – ni3 2014-10-19 09:22:41