hadoop的文件系统FileSystem

FileSystem是一个文件系统的实例,这个文件系统可以是hdfs,也可以是本地的文件系统 。

一  获得hdfs的文件系统

     String uri = "hdfs://10.0.0.134:9000";
     Configuration conf = new Configuration();
     conf.set("fs.default.name", "hdfs://10.0.0.134:9000");

     //该方法得到文件系统,其实用到的只是hdfs的url
     FileSystem fs = FileSystem.get(URI.create(uri), conf);

     // 这种方式也能得到,其实只用到conf中的一个属性:hdfs的访问地址
     fs = FileSystem.get(conf);

     //得到本地的文件系统

     FileSystem fsLocal = FileSystem.getLocal(conf);

     //获得路径下的所有子文件路径
     FileStatus[] globStatus = fs.listStatus(new Path("/user/hadoop/crawl/news/crawl_input/"));

      //读取路径下的所有SequenceFile 。

      for (FileStatus fsFile : globStatus) {
            System.out.println(fsFile.getPath());
            CrawlDatum crawlDatum = new CrawlDatum();
            Text text = new Text();
            SequenceFile.Reader in = new SequenceFile.Reader(fs, fsFile.getPath(), new Configuration());
            while (in.next(text, crawlDatum)) {
                urlSet.add(text.toString());
                out.println(crawlDatum);
                out.println(text);
                text = new Text();
                crawlDatum = new CrawlDatum();
            }
            System.out.flush();
        }

posted @ 2011-07-28 18:42  xiao晓  阅读(2152)  评论(0编辑  收藏  举报