对表格进行快速测试
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()
Run Code Online (Sandbox Code Playgroud)
导致输出
... during second function call
mv: '/tmp/test001.txt': File exists
# file: /tmp/test001.txt
trusted.testfield="<old timestamp from first call>"
...
Run Code Online (Sandbox Code Playgroud)
似乎(与在 linux 中不同)该hadoop fs mv命令不会覆盖目标文件(如果已存在)。有没有办法强制覆盖行为(我想我每次都可以检查和删除目的地,但hadoop mv -overwrite <source> <dest>对于我的目的来说更方便)?
** 顺便说一句,如果我对结果的解释不正确,或者行为似乎不正确,请告诉我(因为我认为覆盖是默认行为,我正在写这个问题,因为我很惊讶它似乎不是) .
小智 4
我认为没有直接的选项可以将文件从一个 HDFS 位置移动和覆盖到另一个位置,尽管复制(cp 命令)可以选择强制(使用 -f)。从Apache Hadoop文档(https://hadoop.apache.org/docs/r1.2.1/hdfs_design.html)来看,Hadoop被设计为使用一次写入多次读取模型,该模型限制了覆盖。
| 归档时间: |
|
| 查看次数: |
5852 次 |
| 最近记录: |