如何解决如何在Hadoop作业中使用BufferedReader / FileReader?
我正在尝试运行Hadoop作业,我将参数(inputPath,outputPath,someString)传递给作业:hadoop jar q2.jar Q2 /user/p2/points_small.csv /user/p2/output -D "hdfs://localhost:9000/user/p2/centroids.csv" 'dfs[a-z.]+'
。
我使用JobRunner并能够成功地将所需的字符串"hdfs://localhost:9000/user/p2/centroids.csv"
解析为一个变量,该变量可以在名为centroidFile
的映射器函数中访问。我正在尝试打开此文件并读取数据,以存储为映射器可访问的某些数组或列表(此处的工作是测试的准系统)。
public static class PointMapper extends Mapper <Object,Text,Text> {
public void map(Object key,Text value,Context context) throws IOException,InterruptedException {
List<List<String>> centers = new ArrayList<>();
String line = "";
try (BufferedReader br = new BufferedReader(new FileReader(centroidFile))) {
while ((line = br.readLine()) != null) {
String[] values = line.split(",");
centers.add(Arrays.asList(values));
}
} catch (IOException e) {
e.printStackTrace();
}
String record = value.toString();
String[] parts = record.split(",");
context.write(new Text(parts[0]),new Text(centers.get(0).get(0)));
}
}
该作业失败,原因为“ NA”,但我确信问题在于,因为我正在尝试对上下文写入不良内容,即未读取csv且值未写入上下文。 / p>
在工作期间如何成功从该文件路径读取数据?我的最终目标是能够将输入数据(一组点)与从此csv加载的数据进行比较。 ,另一组要点。
请注意,使用获取的文件路径读取csv的尝试最终将驻留在main()中,但是出于可读性,我将其包含在map()中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。