您可以使用HDFS的fsck命令來獲得文件大小。
對於例如,當我執行fsck的HDFS的/ tmp/-files,然後我得到以下輸出:
/tmp <dir>
/tmp/100GB <dir>
/tmp/100GB/Try <dir>
/tmp/100GB/Try/1.txt 5 bytes, 1 block(s): OK
/tmp/100GB/_SUCCESS 0 bytes, 0 block(s): OK
/tmp/100GB/part-m-00000 107374182400 bytes, 800 block(s): OK
/tmp/100GB/part-m-00001._COPYING_ 44163923968 bytes, 330 block(s):
/tmp/10GB <dir>
/tmp/10GB/_SUCCESS 0 bytes, 0 block(s): OK
/tmp/10GB/part-m-00000 10737418300 bytes, 81 block(s): OK
/tmp/1GB <dir>
/tmp/1GB/_SUCCESS 0 bytes, 0 block(s): OK
/tmp/1GB/part-m-00000 1073741900 bytes, 9 block(s): OK
/tmp/1GB/part-m-00001 1073741900 bytes, 9 block(s): OK
它遞歸地列出了所有在/ tmp目錄中的文件與它們的大小一起。
現在,解析出與最大尺寸的文件,你可以執行以下命令:
HDFS的fsck的/ tmp/-files | grep「/ tmp /」| grep -v「」| gawk'{print $ 2,$ 1;}'|排序-n 此命令執行以下操作:
HDFS的fsck的/ tmp/-files - 它運行在文件夾中的/ tmp/HDFS文件系統檢查和每個在/ tmp/ grep的文件尋求報告「/ tmp /「 - greps for/tmp /(我們要搜索的文件夾)。這將使在/ tmp/ 的「grep -v‘’」只有文件和文件夾 - 這將刪除輸出目錄(因爲我們只想文件) 徒勞無功{打印$ 2,$ 1;}「 - 這將打印文件大小($ 2),後面跟着文件名($ 1) 排序-n - 這確實對文件的大小,然後在列表的最後一個文件數字排序應與最大尺寸的文件 可以通過管道輸出到尾-1獲得最大的文件。
例如,我得到的輸出爲:
107374182400的/ tmp/100GB /一部分-M-0000
有沒有辦法在我自己的片段 – user2672739
到modiy @ user2672739:看到你的文章的底部編輯鏈接 –
我的意思說我想改變我的腳本,解決它的方法 – user2672739