[英]Append the same string (previous result) on each splitted mapreduce input file in iterative job with hadoop
我是Hadoop的新手,正在編寫迭代的MapReduce作業。
我知道,使用Hadoop時,將從大數據集開始將其拆分為小文件,然后將它們作為輸入發送到不同計算機上的mapfunction。
我只是成功地將MapReduce的結果附加在輸出文件的末尾,但是通過這種方式,通過迭代的工作,該結果將僅發送到一台機器上。
因此,我想將結果附加到發送到每台計算機的EACH分割文件中,以便任何計算機都可以看到以前的結果。
我該怎么做?
在您的Map方法中,您可以將輸出追加到一個公共HDFS文件中,而不是寫入上下文對象。 但是,如果有多個地圖任務試圖追加文件,則會出現錯誤。
解決方法:
如果您需要進一步的幫助,請告訴我。
更新臨時文件邏輯
public void appendtempdate(String tempfile,String data)
{
try
{
File temp = new File(tempfile);
if(!temp.exists())
{
temp.createNewFile();
}
FileWriter fw= new FileWriter(temp.getName(),true);
BufferedWriter bw= new BufferedWriter(fw);
bw.write(data);
bw.close();
}
catch(Execption e)
{
}
}
調用此方法並將臨時文件移至HDFS以進行分布式緩存。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.