hadoop -appendToFile与hadoop -put之间的区别是什么用于连续更新流数据到hdfs

时间:2017-09-19 15:25:19

标签: file hadoop append hdfs

根据hadoop源代码,从类中提取以下描述 -

appendToFile

"Appends the contents of all the given local files to the
given dst file. The dst file will be created if it does not exist."

    "Copy files from the local file system into fs. Copying fails if the file already exists, unless the -f flag is given.
Flags:
-p : Preserves access and modification times, ownership and the mode.
-f : Overwrites the destination if it already exists.
-l : Allow DataNode to lazily persist the file to disk. Forces
replication factor of 1. This flag will result in reduced
durability. Use with care.
-d : Skip creation of temporary file(<dst>._COPYING_)."

我正在尝试将文件定期更新为hdfs,因为它是从我本地文件系统中的流媒体源动态更新的。

我应该使用appendToFile和put,以及为什么?

1 个答案:

答案 0 :(得分:1)

appendToFile修改HDFS中的现有文件,因此只需要将新数据流式传输/写入文件系统。

put重写整个文件,因此需要将整个新版本的文件流式传输/写入文件系统。

如果您只是附加到文件(即将日志添加到文件末尾),则应该支持appendToFile。如果这是你的用例,这个功能会更快。如果文件的更改不仅仅是简单的追加到最后,您应该使用put(速度较慢,但​​不会丢失数据或损坏文件)。