用 hadoop fs mv 覆盖目的地?
Overwrite destination with hadoop fs mv?
正在快速测试表单
testfunc() {
hadoop fs -rm /test001.txt
hadoop fs -touchz /test001.txt
hadoop fs -setfattr -n trusted.testfield -v $(date +"%T") /test001.txt
hadoop fs -mv /test001.txt /tmp/.
hadoop fs -getfattr -d /tmp/test001.txt
}
testfunc()
testfunc()
导致输出
... during second function call
mv: '/tmp/test001.txt': File exists
# file: /tmp/test001.txt
trusted.testfield="<old timestamp from first call>"
...
似乎(与 linux 不同)hadoop fs mv
命令不会覆盖已存在的目标文件。有没有办法强制覆盖行为(我想我每次都可以检查和删除目的地,但像 hadoop mv -overwrite <source> <dest>
这样的东西对我来说会更方便)?
** 顺便说一句,如果我对结果的解释不正确或者行为似乎不正确,请告诉我(因为我假设覆盖是默认行为,所以我写这个问题 因为我很惊讶,好像不是。
我认为没有直接的选项可以将文件从一个 HDFS 位置移动和覆盖到另一个位置,尽管复制(cp 命令)可以选择强制(使用 -f)。从 Apache Hadoop 文档 (https://hadoop.apache.org/docs/r1.2.1/hdfs_design.html) 中,据说 Hadoop 被设计为使用限制覆盖的一次写入多次读取模型。
正在快速测试表单
testfunc() {
hadoop fs -rm /test001.txt
hadoop fs -touchz /test001.txt
hadoop fs -setfattr -n trusted.testfield -v $(date +"%T") /test001.txt
hadoop fs -mv /test001.txt /tmp/.
hadoop fs -getfattr -d /tmp/test001.txt
}
testfunc()
testfunc()
导致输出
... during second function call
mv: '/tmp/test001.txt': File exists
# file: /tmp/test001.txt
trusted.testfield="<old timestamp from first call>"
...
似乎(与 linux 不同)hadoop fs mv
命令不会覆盖已存在的目标文件。有没有办法强制覆盖行为(我想我每次都可以检查和删除目的地,但像 hadoop mv -overwrite <source> <dest>
这样的东西对我来说会更方便)?
** 顺便说一句,如果我对结果的解释不正确或者行为似乎不正确,请告诉我(因为我假设覆盖是默认行为,所以我写这个问题 因为我很惊讶,好像不是。
我认为没有直接的选项可以将文件从一个 HDFS 位置移动和覆盖到另一个位置,尽管复制(cp 命令)可以选择强制(使用 -f)。从 Apache Hadoop 文档 (https://hadoop.apache.org/docs/r1.2.1/hdfs_design.html) 中,据说 Hadoop 被设计为使用限制覆盖的一次写入多次读取模型。