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