我在Hadoop上運行MapReduce程序。HDFS有文件,但java.io.FileNotFoundException發生
inputformat將每個文件路徑傳遞給映射器。
我可以檢查通過在cmd這樣的文件,
$ FS的Hadoop HDFS -ls://slave1.kdars.com:8020 /用戶/ Hadoop的/ num_5/13.pdf
找到1 items -rwxrwxrwx 3 hdfs hdfs 184269 2015-03-31 22:50 hdfs://slave1.kdars.com:8020/user/hadoop/num_5/13.pdf
但是,當我試圖從映射器方面,它不工作。
15/04/01 6點13分04秒INFO mapreduce.Job:任務標識:attempt_1427882384950_0025_m_000002_2,狀態:FAILED 錯誤:java.io.FileNotFoundException:HDFS:/slave1.kdars.com:8020 /用戶/ hadoop的/num_5/13.pdf(沒有這樣的文件或目錄)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:146)
at java.io.FileInputStream.<init>(FileInputStream.java:101)
at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:1111)
我檢查了inputformat做工精細和映射器已經得到正確的文件路徑。 映射器代碼看起來像這樣,
@Override
public void map(Text title, Text file, Context context) throws IOException, InterruptedException {
long time = System.currentTimeMillis();
SimpleDateFormat dayTime = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
String str = dayTime.format(new Date(time));
File temp = new File(file.toString());
if(temp.exists()){
DBManager.getInstance().insertSQL("insert into `plagiarismdb`.`workflow` (`type`) value ('"+temp+" is exists')");
}else{
DBManager.getInstance().insertSQL("insert into `plagiarismdb`.`workflow` (`type`) value ('"+temp+" is not exists')");
}
}
請幫助我。
非常感謝你!!!!它解決了這個問題! – ShineH 2015-04-01 12:45:00