我试图打开一个文件,将文件中读取的一些参数传递给作业mapreduce。这段代码在本地模式下工作,但是当我尝试攻击hdfs时,它就不工作了。
这是我的密码:
Path tmpPath = new Path(tmpFile);
try {
InputStream ips = new FileInputStream(tmpFile);
InputStreamReader ipsr = new InputStreamReader(ips);
BufferedReader br = new BufferedReader(ipsr);
String[] minMax = br.readLine().split("-");
min = minMax[0];
max = minMax[1];
br.close();
} catch (Exception e) {
System.out.println(e.toString());
System.exit(-1);
}
这是出现的代码错误:
“java.io.filenotfoundexception:hdfs:/quickstart。cloudera:8020/user/cloudera/dataout/tmp/part-r-00000 (没有这样的文件或目录)
这是我在上一个作业中写入文件的位置:
Path tmp = new Path("dataOut/tmp");
FileOutputFormat.setOutputPath(job, tmp);
作为mapreduce作业,这将写入文件part-r-00000。
可能你们都会说,“试试分布式缓存”。我已经试过了,但我是java、hadoop和mapreduce的新手。我不能让它工作。。。
谢谢
2条答案
按热度按时间bgtovc5b1#
我终于明白了。我用了这个代码:
raogr8fs2#
查看错误代码“java.io.filenotfoundexception:hdfs:/quickstart”。cloudera:8020/user/cloudera/dataout/tmp/part-r-00000 (没有这样的文件或目录)
您的输出路径似乎不在给定的目录中。尝试运行以下命令以检查是否能够超出路径。
hadoop fs-text hdfs:/quickstart。cloudera:8020/user/cloudera/dataout/tmp/part-r-00000