使用shellscript将文件从unc复制到hdfs

时间:2016-12-22 12:34:28

标签: bash shell hadoop unc

我在此路径" //aloha/log/folderlevel1/folderlevel2/"

中有UNC路径文件夹

这些level2文件夹中的每一个都将包含"empllog.txt","deptlog.txt","adminlog.txt"等文件以及其他文件。

我希望复制此特定文件夹的内容(如果它们是在过去24小时内创建的)仅当这三个文件存在于HDFS cloudera集群中时。但如果其中一个文件不存在,则不应复制该特定文件夹。另外我需要保留folderstructre。

即在HDFS中它应该是"/user/test/todaydate/folderlevel1/folderlevel2"

我写了下面的shell脚本,将文件复制到hdfs并创建了日期文件夹。但不确定如何进一步推进UNC Paths&其他标准。

        day=$(date +%Y-%m-%d)

    srcdir="/home/test/sparkjops"
    stdir="/user/test/$day/"

    hadoop  dfs -mkdir $day /user/test

    for f in ${srcdir}/*

    do

if [ $f == "$srcdir/empllog.txt" ]

then

   hadoop dfs -put $f   $stdir

elif [  $f == "$srcdir/deptlog.txt" ]

then hadoop dfs -put $f  $stdir

elif [ $f == "$srcdir/adminlog.txt" ]

then hadoop dfs -put $f $stdir

fi


done

我试图像下面那样更改UNC路径。它没有做任何事情。没有错误&也没有复制内容。

srcdir="//aloha/log/*/*"

srcdir='//aloha/log/*/*'

srcdir="\\aloha\log\*\*"

感谢所有帮助。 感谢。

编辑1:

我用代码sh -x调试模式运行它。还用bash -x运行它(只是为了检查)。但它返回该文件未找到错误如下

test@ubuntu:~/sparkjops$ sh -x ./hdfscopy.sh
+ date +%Y-%m-%d
+ day=2016-12-24
+ srcdir= //aloha/logs/folderlevel1/folderlevel2
+ stdir=/user/test/2016-12-24/
+ hadoop dfs -mkdir 2016-12-24 /user/test
DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it.

mkdir: `2016-12-24': File exists
mkdir: `/user/test': File exists
+ //aloha/logs/folderlevel1/folderlevel2/* = //aloha/logs/folderlevel1/folderlevel2/empllog.txt.txt
./hdfscopy.sh: 12: ./hdfscopy.sh: //aloha/logs/folderlevel1/folderlevel2/*: not found
+ //aloha/logs/folderlevel1/folderlevel2/* = //aloha/logs/folderlevel1/folderlevel2/deptlog.txt.txt
./hdfscopy.sh: 12: ./hdfscopy.sh: //aloha/logs/folderlevel1/folderlevel2/*: not found
+ //aloha/logs/folderlevel1/folderlevel2/* = //aloha/logs/folderlevel1/folderlevel2/adminlog.txt.txt
./hdfscopy.sh: 12: ./hdfscopy.sh: //aloha/logs/folderlevel1/folderlevel2/*: not found
test@ubuntu:~/sparkjops$

但是无法理解为什么它不是从那条路上读的。我也尝试了不同的转义序列(每个斜杠的双打,正如我们在窗口文件夹路径中所做的那样)。但没有人工作。所有都抛出相同的错误消息。我不知道如何在脚本中读取此文件。任何帮助将不胜感激。

0 个答案:

没有答案