eclipse上运行wordcount的问题

monkey123apple 2013-03-16 03:09:09
求助各位大神,记得之前在eclipse运行完wordcount后会在output里形成一个part-r-00000的文件,然后我不修改输出路径直接再运行生成了part-r-00001、part-r-00002等文件。后来冲准过了系统,jdk、hadoop、eclipse也都重装了,但都用的之前的安装包,配置过程也没有变。运行wordcount后成功生成part-r-00000,然后再次运行问题救出来了,提示:
Exception in thread "main" org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory output already exists
意思就是说输出路径已经存在了,网搜,发现本来在运行这个程序之前,输出路径就是不应该存在的,因为hadoop的保护机制,怕之前文件被覆盖,而且有这句程序:
FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
也说明应该重新指明输出路径或删掉之前的输出路径。
然后我就凌乱了,我的记忆没有问题,我之前可以在output里进行生成的文件自动以递增顺序命名并同时存在是怎么回事?之前是不用修改输出路径的,每次都修改太麻烦了吧。

另外,两次用的wordcount的程序是一样的,难道我之前有打错程序?
...全文
249 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你的output中已经存在了文件 说明你以前运行过程序 然后 没有删除这个输出文件 如果是本地的伪分布式 你得refresh一下 然后删除
撸大湿 2013-03-27
  • 打赏
  • 举报
回复
for (FileStatus file : outfiles) {
				if (file.isDir() == false && file.getPath().toString().indexOf("part-r-") >= 0) {
					String mvinpath = file.getPath().toString();
					String mvoutpath = _myfs.myConf.get("MoveOutPutPath") + "_"
							+ file.getPath().toString().substring(file.getPath().toString().indexOf("part-r-") + 7);
					new MoveFile(mvinpath, mvoutpath, _myfs.getMyConf());
					System.out.println(mvinpath);
					System.out.println(mvoutpath);
				}
			}
我每次都会把part-r-文件移走,并重命名,然后删除原来那个OUTPUT目录
on_way_ 2013-03-17
  • 打赏
  • 举报
回复
你用的是什么模式:单机?伪分布?还是全分布? 要是全分布的话输出路径一定是不能存在的。

20,808

社区成员

发帖
与我相关
我的任务
社区描述
Hadoop生态大数据交流社区,致力于有Hadoop,hive,Spark,Hbase,Flink,ClickHouse,Kafka,数据仓库,大数据集群运维技术分享和交流等。致力于收集优质的博客
社区管理员
  • 分布式计算/Hadoop社区
  • 涤生大数据
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧