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

eimct9ow  于 2021-06-04  发布在  Hadoop
关注(0)|答案(3)|浏览(421)

我正在尝试从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吗?例如,当我直接给出路径(没有前缀)时,它表示文件不存在。
编辑:到目前为止,没有一个解决方案对我有效。我总是有例外-

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

它似乎试图在本地找到文件。

ghg1uchk

ghg1uchk1#

看起来您的路径中缺少一个/,应该在文件系统后面加两个/。尝试指定以下路径

hdfs://localhost:9000/myFirstSelfWriteFile
3zwtqj6y

3zwtqj6y2#

尝试

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”

ct2axkht

ct2axkht3#

您需要使用org.apache.hadoop.fs包中的类(filesystem、fsdatainputstream、fsdataoutputstream和path)。有好几篇文章,但我会用hadoopwiki上的这篇

相关问题