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();
}