http://yjhexy.javaeye.com/blog/561720
可以通过FileSystem类的静态get方法来获取HDFS文件系统的实例,FileSystem的实例实现了很多对于文件操作的函数,如上次介绍的open方法,当然,FileSystem也实现了文件写入操作的函数了.我们可以通过调用create方法来在hdfs文件系统中建立一个文件,create方法返回一个FSDataOutputStream的实例,FSDataOutputStream是继承自java.io.DataOutputStream的类,因此,通过FileSystem的create方法返回的FSDataOutputStream的实例就可以进行文件的写操作了.我们来看一个简单的例子:
程序的功能很简单,在hdfs文件系统的根目录中创建一个helloworld文件,然后将”Hello world”字符串写入该文件.
值得一提的是FileSystem还提供了append方法,将程序稍加修改改成如下样子看看什么效果?
run之发现如下错误:
Exception in thread "main" java.lang.UnsupportedOperationException: HDFS does not support append yet
at org.apache.hadoop.hdfs.DistributedFileSystem.append(DistributedFileSystem.java:179)
at org.apache.hadoop.fs.FileSystem.append(FileSystem.java:533)
at HDFSWriteHelloWorld.main(HDFSWriteHelloWorld.java:16)
原来HDFS还没有实现append方法.(注:使用的版本是hadoop-0.19.1,没有在最新的hadoop-0.20中测试)
对于HDFS文件系统,目前最主要的应用是结合Hadoop的map-reduce框架对大文件进行处理,更多是数据挖掘和数据分析的应用,因此,HDFS提供了基于key-value的SequenceFile的File-based的文件结构和以及MapFile对文件操作进行优化,相信随着Hadoop以及HDFS的完善,HDFS文件系统会提供更多更方便的文件操作.