gpt4 book ai didi

java - 为什么检查文件是否存在于 hadoop 中会导致 NullPointerException?

转载 作者:可可西里 更新时间:2023-11-01 14:15:41 25 4
gpt4 key购买 nike

我正在尝试创建或打开一个文件以在 HDFS 中存储一些输出,但是当我在代码片段的倒数第二行调用 exists 方法时出现 NullPointerException下面:

DistributedFileSystem dfs = new DistributedFileSystem();
Path path = new Path("/user/hadoop-user/bar.txt");
if (!dfs.exists(path)) dfs.createNewFile(path);
FSDataOutputStream dos = dfs.create(path);

这是堆栈跟踪:

java.lang.NullPointerException
at org.apache.hadoop.dfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:390)
at org.apache.hadoop.fs.FileSystem.exists(FileSystem.java:667)
at ClickViewSessions$ClickViewSessionsMapper.map(ClickViewSessions.java:80)
at ClickViewSessions$ClickViewSessionsMapper.map(ClickViewSessions.java:65)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:47)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:227)
at org.apache.hadoop.mapred.TaskTracker$Child.main(TaskTracker.java:2209)

可能是什么问题?

最佳答案

我认为这样做的首选方式是:

Configuration conf = new Configuration();
conf.set("fs.default.name", "hdfs://mynamenodehost:9000");
FileSystem fs = FileSystem.get(conf);
Path path = ...

这样您就不会将您的代码绑定(bind)到 FileSystem 的特定实现;另外,您不必担心 FileSystem 的每个实现是如何初始化的。

关于java - 为什么检查文件是否存在于 hadoop 中会导致 NullPointerException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4727901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com