**“Path inputPath = new Path(job.get(KnnDriver.QUERY_DIR_PROPERTY));”**//it gives out error。
if (inputPath == null)
throw new UnsupportedOperationException("ERROR: query directory not set");
job.setInputFormat(NonSplitableTextInputFormat.class);
NonSplitableTextInputFormat.addInputPath(job, inputPath);
Path outputPath = new Path(job.get(KnnDriver.RESULT_DIR_PROPERTY));
FileSystem.get(job).delete(outputPath, true);
// Change to FileOutputFormat to see output
job.setOutputFormat(TextOutputFormat.class);
TextOutputFormat.setOutputPath(job, outputPath);
KnnDriver.run(job);
}
我在文本中记录了错误。 以下是我在knnDriver中设置的静态常量。
public static final String QUERY_DIR_PROPERTY = "knn.query.dir";
public static final String RESULT_DIR_PROPERTY = "knn.result.dir";
public static final String THRESHOLD_PROPERTY = "knn.sim.threshold";
答案 0 :(得分:0)
而不是先查看变量是否为空,然后做你需要的任何事情,只要你需要做任何事情,只要它是不是 null。这消除了检查变量是否“完全”等于某事的需要。它会产生并发症。
要避免这种情况,请使用执行上述操作的if语句。
if(inputPath != null){
//Whatever you want
}else{
//However you want to catch it
}
基本上,你不再寻找黑天鹅,只是检查没有。这种方法的问题要小得多,应该用你的方式来代替你。