2012-07-22 52 views
1

我有大型mbox文件,我正在使用mstor等第三方API來解析來自使用hadoop的mbox文件的消息。我已經將這些文件上傳到hdfs中。但問題是,這個API只使用本地文件系統路徑,類似於圖所示如何使用hadoop中的第三方API從hdfs讀取文件,如果這些API只使用本地文件系統路徑?

MessageStoreApi store = new MessageStoreApi(「file location in locl file system」); 

我找不到這個API會從流初始化在構造函數中。所以我無法讀取hdfs流並初始化它。

現在我的問題是,我應該從hdfs複製我的文件到本地文件系統並從本地臨時文件夾初始化它?因爲這是我現在正在做的:

目前我的地圖功能接收mbox文件的路徑。

Map(key=path_of_mbox_file in_hdfs, value=null){ 

String local_temp_file = CopyToLocalFile(path in hdfs); 
MessageStoreApi store = new MessageStoreApi(「local_temp_file」); 
//process file 

} 

或者還有其他解決方案嗎?我期待一些解決方案,如果我增加塊大小,以便單個文件適合一個塊,並且某種程度上,如果我可以在我的映射函數中獲取這些塊的位置,大多數映射函數將在同一個節點上執行,塊存儲,那麼我可能不必總是下載到本地文件系統?但我不知道這是否會始終工作:)

建議,意見,歡迎!

回答

2

對於本地文件系統路徑訪問,HDFS提供了兩個選項:HDFS NFS(通過NFSv3掛載)和FUSE掛載的HDFS。

前者是Apache Hadoop docs(CDH用戶可以follow this instead

後者在Apache Hadoop wiki記載(CDH用戶可能會發現相關文檔here instead

的NFS功能更上游維護比下記錄FUSE選項,目前。

相關問題