快速测试表单
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>
对我来说会更方便吗?
**顺便说一句,如果我对结果的解释不正确,或者行为看起来不正确,请告诉我(因为我假设覆盖是默认行为,我写这个问题是因为我很惊讶它看起来不正确)。
1条答案
按热度按时间bzzcjhmw1#
我认为没有直接的选项可以将文件从一个hdfs位置移动和覆盖到另一个hdfs位置,尽管复制(cp命令)有强制的选项(使用-f)。来自apache hadoop文档(https://hadoop.apache.org/docs/r1.2.1/hdfs_design.html),据说hadoop是采用一次写多读的模式设计的,这种模式限制了重写。