我想将一些文件移动到输入文件夹并通过将其置于configure()方法中尝试所需的代码(由于我有一些限制,我不得不使用旧的mapred API)。 但是,有些配置中的代码没有被执行。
我已经以其他更好的方式实现了我的要求。虽然这是一个愚蠢的想法,但我想知道为什么它没有被执行。我检查了作业跟踪器,所有变量都得到了正确的值
代码:
在main中:
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String date = sdf.format(new Date());
if(args[3].toString().equalsIgnoreCase("net")){
imgInpPath = "/user/mapreduce/output/net/"+date+"/";
inputDir = inputDir+"net/";
}
conf.set("imgInpPath", imgInpPath);
conf.set("inputDir", inputDir);
FileInputFormat.setInputPaths(conf,inputDir);
在configure()
中inputPath = conf.get("inputDir");
Path inputImgPath = new Path(conf.get("imgInpPath"));
Configuration config = new Configuration();
FileSystem fileSystem = FileSystem.get(config);
inputImgPath = fileSystem.makeQualified(inputImgPath);
FileStatus[] status = fileSystem.listStatus(inputImgPath, new PathFilter(){
@Override
public boolean accept(Path name) {
return name.getName().contains("part");
}});
for(int i=0; i <status.length;i++)
{
Path inpPath = status[i].getPath();
FileUtil.copy(fileSystem, inpPath, fileSystem, new Path(inputPath), true , conf);
}
正如我所说,所需的东西是通过其他方式实现的。但是,我想知道,为什么不执行此操作,无论要求如何。