美文网首页
Java读取hdfs文件路径下所有文件

Java读取hdfs文件路径下所有文件

作者: 依米兒 | 来源:发表于2020-05-25 14:36 被阅读0次
    • 如果数据存放在hdfs上,一次性需要读取多个则需要批量读取,可以使用下面代码,先获取到路径下的所有文件名,再循环读取。
    Configuration conf=new Configuration();
    FileSystem hdfs=FileSystem.get(conf);
    //这里的路径是在hdfs上的存放路径,但是事先需将hdfs-site.xml文件放在工程的source文件下,这样才能找到hdfs
    Path path=new Path("user/my/testData/201912/");
    FileStatus[] stats=hdfs.listStatus(path);
    
    for (int i=0; i<stats.length; i++){
      //打印每个文件路径
      System.out.println(stats[i].getPath().toString());
      //读取每个文件
      InputStream inputStream=hdfs.open(stats[i].getPath());
      InputStreamReader inputStreamReader= new InputStreamReader(inputStream);
      BufferedReader reader=new BufferedReader(inputStreamReader);
      String line="";
      while((line=reader.readLine())!=null){
        System.out.println(line);
        //可以在这里对每一条数据进行处理
      }
    }
    
    • 如果需要使用通配符,匹配得到多个文件路径或者多个文件夹下面的多个文件路径,需要修改上面代码中的两行
    //匹配得到某个文件夹下所有文件路径
    Path path=new Path("user/my/testData/201912/*");
    FileStatus[] stats=hdfs.globStatus(path);
    
    //匹配得到符合某个条件下的所有文件夹下的文件路径
    //例如匹配文件夹名以2019开头的目录下所有文件
    Path path=new Path("user/my/testData/2019*/*");
    FileStatus[] stats=hdfs.globStatus(path);
    

    相关文章

      网友评论

          本文标题:Java读取hdfs文件路径下所有文件

          本文链接:https://www.haomeiwen.com/subject/obgqahtx.html