mapreduce程序无法读取输入文件

omqzjyyz  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(410)

我有一个小房间 csv 存档于 hdfs 在此位置: "hdfs://csehadoop/user/department.csv" . 在我的应用程序中使用以下代码 mapreduce 读取文件内容并将其存储在 hashmap .

brReader = new BufferedReader(new FileReader("hdfs://csehadoop/user/department.csv"));
while ((strLineRead = brReader.readLine()) != null) {
        String deptFieldArray[] = strLineRead.split(",");
        System.out.println(deptFieldArray[2].toString());
        String businessId = deptFieldArray[2].toString();
        String fields = deptFieldArray[3].toString() + "\t" + deptFieldArray[10].toString();
        DepartmentMap.put(businessId, fields);
}

然而,结果 hashmap ( DepartmentMap )总是 null . 我怎样才能纠正这个问题?

e0bqpujr

e0bqpujr1#

你不能这样读取hdfs文件。必须在指定路径打开fsdatainputstream。例如:

Path pt = new Path("hdfs://csehadoop/user/department.csv");
FileSystem fs = FileSystem.get(context.getConfiguration());
BufferedReader br = new BufferedReader(new InputStreamReader(fs.open(pt)));

相关问题