我在hdfs的主目录中有两个文件。这些是file1.txt和file2.txt。
我将file1.txt
作为输入参数传递给mapreduce程序中的驱动程序类。它工作正常。但是,当我想在同一个映射器中阅读file2.txt
时,我会收到file not found
错误。
正确的编码方式是什么,以便程序能够识别file2.txt
。我在Java编码。
我的pwd是home / 109045,这是我的两个文件。我看到$hadoop fs -ls
时列出了它们。
我的文件1是claimdict.txt,file2是FNOLR1.txt
代码是:
public class CS1Mapper extends Mapper<LongWritable, Text, Text, IntWritable> {
@Override
public void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
String clmid = null;
int fnolcnt = 0;
String line = value.toString();
Scanner scan1 = new Scanner(line);
scan1.useDelimiter(",");
while (scan1.hasNext()) {
scan1.next(); // term
String syn = scan1.next(); // synonyms
scan1.next(); // collision type
try {
fnolcnt = 0;
clmid = null;
//File file = new File("hdfs://10.32.6.88:8020/home/109045/" + "FNOLR1.txt");
/File file = new File("hdfs://localhost:8020/FNOLR1.txt");
File file = new File("FNOLR1.txt");
Scanner scan2 = new Scanner(file);
[109045 @ 01HW845977~] $ hadoop fs -ls FNOLR1.txt 找到1项 -rw-r - r-- 3 109045保证171 2015-12-02 18:31 FNOLR1.txt [109045 @ 01HW845977~] $
[109045 @ 01HW845977~] $ hadoop fs -ls claimdict.txt 找到1项 -rw-r - r-- 3 109045保证180 2015-12-02 18:23 claimdict.txt [109045 @ 01HW845977~] $
另外,如何确认本地主机的端口是什么?
答案 0 :(得分:0)
可能是文件权限问题。你能分享hadoop fs -ls <directory_where_file1_and_file2_exists>
的结果吗?