2013-11-04 132 views
42

對HDFS文件檢查的快速方法是使用tail爲什麼沒有'hadoop fs -head'shell命令?

~$ hadoop fs -tail /path/to/file 

這將顯示數據的文件,這是非常有用的,在過去的千字節。但是,相反的命令head似乎不是shell命令集合的一部分。我覺得這很令人驚訝。

我的假設是,由於HDFS是爲在非常大的文件上進行非常快的流式讀取而構建的,因此存在一些影響head的訪問導向問題。這讓我猶豫不決,無法進入頭部。有人有答案嗎?

+3

缺乏實施此功能的社區興趣? [https://issues.apache.org/jira/browse/HDFS-206](https://issues.apache.org/jira/browse/HDFS-206)。 – cabad

回答

103

我會說它更多的是與效率有關 - 頭部可以很容易地通過管理hadoop fs -cat的輸出通過linux head命令來複制。

hadoop fs -cat /path/to/file | head 

這是有效,因爲頭將關閉出底層流線的期望數量之後已經輸出

以這種方式使用尾將是相當少的高效率 - 如你必須超過流整個文件(所有HDFS塊)找到最後的x行。

hadoop fs -cat /path/to/file | tail 

Hadoop的FS的,你注意,最後千字節作品-tail命令 - 的Hadoop可以有效地找到了最後一塊跳到最後千字節的位置,然後流輸出。通過尾巴管道不容易做到這一點。

+0

如何把這個頭hadoop的東西變成別名形式。argpas(){ HDFS DFS -cat $ 1 |頭部 - $ 2 } alias hh = argpas 我試過這個,但它不起作用 –

+0

bash函數調用相同的(可選通過'-n {num} {hdfs_path}'給出num行顯示):'hdfs- head(){[「$ 1」=「-n」] && {n = $ 2;班次2; } || N = 10; hdfs dfs -cat「$ @」|頭-n $ n; '' – michael

1
hdfs -dfs /path | head 

是解決問題的好方法。

0

你可以嘗試如下因素命令

hadoop fs -cat /path | head -n 

其中-n可以與記錄編號替換查看

0

在Hadoop的V2:

hdfs dfs -cat /file/path|head 

在Hadoop的V1和V3:

hadoop fs -cat /file/path|head 
0

與3.1.0版本開始,我們將有它:

用法:hadoop的FS -head URI

顯示文件到stdout的第一個千字節。

請參閱here