有时需要替换HDFS上的文件,但Hadoop目前没提供相应的hadoop fs -mv命令,如是自己动手通过脚本实现,此脚本支持通配符,支持文件夹整个上传等:
#!/usr/bin/env bash
prePath=$2
args=$1
func_putFile() {
file=$1
hadoopFile=$(basename $file)
echo "put file: $file"
hadoop fs -rm $prePath/$hadoopFile &>/dev/null
hadoop fs -put $file $prePath/$hadoopFile
}
func_put() {
args=$1
if [ -d "$args" ];then
cd $args
func_put "*"
cd ..
elif [ "$args" = "*" ];then
for file in *;do
if [ -d "$file" ];then
func_put $file
else
func_putFile $file
fi
done
else
func_putFile $args
fi
}
echo $args
for file in $args;do
func_put $file
done
使用时传入两参数,第一个是源文件(有通配符时请用/转义),第二个是HDFS目标文件夹。
相关阅读: