gpt4 book ai didi

java - 从 HDFS 读取数据 - 我的程序找不到路径

转载 作者:可可西里 更新时间:2023-11-01 14:49:54 24 4
gpt4 key购买 nike

我正在尝试从 HDFS 读取文件的内容。我的代码如下 -

package gen;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class ReadFromHDFS {

public static void main(String[] args) throws Exception {

if (args.length < 1) {
System.out.println("Usage: ReadFromHDFS <hdfs-file-path-to-read-from>");
System.out.println("Example: ReadFromHDFS 'hdfs:/localhost:9000/myFirstSelfWriteFile'");
System.exit(-1);
}

try {
Path path = new Path(args[0]);
FileSystem fileSystem = FileSystem.get(new Configuration());
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileSystem.open(path)));
String line = bufferedReader.readLine();
while (line != null) {
System.out.println(line);
line = bufferedReader.readLine();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

但是,我不知道如何为这个程序提供我的 HDFS 目录的路径。我试过了-

java -cp <hadoop jar:myjar> gen.ReadFromHDFS <path>

在路径中,我尝试直接引用目录(我在执行 hadoop fs -ls 时看到的内容),目录中的文件,添加 hdfs:/localhost, hdfs:/但它们都不起作用。任何人都可以帮助我如何将文件夹的路径传递给 HDFS?例如,当我直接给出路径(没有前缀)时,它说该文件不存在。

编辑:到目前为止,似乎没有任何解决方案适合我。我总是得到异常(exception) -

  java.io.FileNotFoundExceptoin: File <filename> does not exist.
at org.apache.hadoop.fs.getFileSystem.getFileStatus(RawLocalFileSystem.java:361)

好像是在本地找文件。

最佳答案

尝试

FileSystem fileSystem = FileSystem.get(new Configuration());
Path path = new Path(fileSystem.getName() + "/" + args[0]);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileSystem.open(path)));
String line = bufferedReader.readLine();

并给出 HDFS 中的文件路径(不带前缀)

"/myFirstSelfWriteFile"

不包括“hdfs:/localhost”

关于java - 从 HDFS 读取数据 - 我的程序找不到路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24986887/

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