Hadoop FileSystem类
声明:代码来自《Hadoop应用技术开发详解》4.7.2,版权归作者所有。
1. 概述
文件在Hadoop中表示为一个Path对象,可以把路径看做是Hadoop文件系统的URI,例如:hdfs://master:9000/user/hadoop/study/mr/WordCount/input/file1.txt
FileSystem是Hadoop中文件系统的抽象父类,Configuration对象封装了客户端或者服务器端的配置信息。
通过FileSystem类访问Hadoop中的文件,基本方法是首先通过FileSystem类的get方法获取一个实例,然后调用它的open方法获得输入流。
2. 代码
file: hdfs\FileSystemReader.java
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IOUtils; import java.io.InputStream; import java.net.URI; /** * @version 1.0.0, 2015/2/2 */ public class FileSystemReader { public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); String uri = args[0]; FileSystem fs = FileSystem.get(URI.create(uri), conf); InputStream inputStream = null; try { inputStream = fs.open(new Path(uri)); IOUtils.copyBytes(inputStream, System.out, 4096, false); } finally { IOUtils.closeStream(inputStream); } } }
3. 运行结果
[hadoop@master hdfs]$ hadoop jar FileSystemReader.jar hdfs://master:9000/user/hadoop/study/mr/WordCount/input/file1.txt Hello, i love coding are you ok? Hello, i love hadoop areyou ok?