FSDataOutputStream 类重载了很多Write 方法,这些Write 方法写入很多类型的数据:比如字节数组,Long、Int、Char 等。要获得FSDataOutputStream 的实例,必须先将FileSystem 类与HDFS 建立连接,然后通过路径返回FSDataOutputStream 实例。
FileSystem 类有一系列创建文件的方法,这些方法大体分为Create 函数和Append 函数。Create 函数是给拟创建的文件指定一个Path 对象,返回FSDataOutputStream 对象。Append 函数是在HDFS 上已有的文件末尾追加写入数据的方法。下面是具体的函数式:
Public FSDataOutputStream creat(Path p) throws IOException
Create 函数可以创建一个空文件,然后可以向该文件顺序写入,除了上述的方法,Create函数还有很多重载的方法,用来设置是否强制覆盖文件、设置文件副本数、写入文件的缓存大小、文件块大小等。
Public FSDataOutputStream append(Path p) throws IOException
Append 函数可以打开一个已有文件,并在文件末尾追加数据。以日志文件为例,可以重启后在文件上继续写入日志。Append 方法也有很多重载的方法,下面将给出创建文件、文件追加的程序,其代码如下:
运行程序后,从Hadoop 的Web 界面可以看到根路径下新建了“banhua.txt”文件,该文件内容与E 盘下的“banzhang.txt”文本相同。本地文本的数据流作为输入流,HDFS 方向作为输出流,通过IOUtils 进行拷贝操作,如图3.17 所示。
(www.xing528.com)
图3.17 本机拷贝到HDFS 流程
上面使用的是Create 函数对HDFS 进行的新建文件操作,后面使用Append 函数对“banzhang.txt”文件追加内容,其程序如下:
程序运行结束后,使用命令“hadoop fs -cat /banzhang.txt”查看该文件,可以发现该文件进行了追加,其运行结果如下:
[apache@master hadoop]$hadoop fs -cat /banzhang.txt
hello hadoop
hello hdfshello hadoop
hello hdfs
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。