[英]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.