在 Scala 中,我試圖計算 Hdfs 目錄中的檔案。我試圖獲取檔案串列val files = fs.listFiles(path, false)并對其進行計數或獲取它的大小,但它不能像files型別那樣作業RemoteIterator[LocatedFileStatus]
關于我應該如何處理的任何想法?
謝謝你的幫助
uj5u.com熱心網友回復:
以前已經這樣做過,但通常人們使用 FSImage。(名稱節點檔案的副本。)
然后他們會將其放入配置單元表中,然后您可以查詢它以獲取有關您的 hdfs 檔案系統的資訊。
這是一個非常好的教程,它解釋了如何匯出 fsimage 并將其放入 hive 表中。
這是我認為我更喜歡的另一個:
獲取 fsimage 檔案并將其復制到 HDFS #connect to any hadoop cluster node as hdfs user
#downloads the fsimage file from namenode hdfs dfsadmin -fetchImage /tmp #converts the fsimage file into tab delimited file hdfs oiv -i /tmp/fsimage_0000000000450297390 -o /tmp/fsimage.csv -p Delimited #remove the header and copy to HDFS sed -i -e "1d" fsimage.csv hdfs dfs -mkdir /tmp/fsimage hdfs dfs -copyFromLocal /tmp/fsimage.csv /tmp/fsimage #create the intermediate external table in impala CREATE EXTERNAL TABLE HDFS_META_D ( PATH STRING , REPL INT , MODIFICATION_TIME STRING , ACCESSTIME STRING , PREFERREDBLOCKSIZE INT , BLOCKCOUNT DOUBLE, FILESIZE DOUBLE , NSQUOTA INT , DSQUOTA INT , PERMISSION STRING , USERNAME STRING , GROUPNAME STRING) row format delimited fields terminated by '\t' LOCATION '/tmp/fsimage';
一旦它在一張桌子上,你真的可以在 scala/spark 中完成其余的作業。
uj5u.com熱心網友回復:
我最終使用:
var count: Int = 0
while (files.hasNext) {
files.next
count = 1
}
作為一個 Scala 初學者,我不知道如何制作一個count (答案是count = 1)。這實際上很安靜
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/481785.html
