通过脚本实现简单替换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目标文件夹。

相关阅读:

将本地文件拷到HDFS中

从HDFS下载文件到本地

将本地文件上传至HDFS 

HDFS基本文件常用命令

Hadoop中HDFS和MapReduce节点基本简介

《Hadoop实战》中文版+英文文字版+源码【PDF】

Hadoop: The Definitive Guide【PDF版】

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/7ad8a641eb170666309ebe397d489782.html