通过脚本实现简单替换HDFS上的文件

有时需要替换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目标文件夹。

相关阅读:

相关推荐