【发布时间】:2019-11-25 00:04:12
【问题描述】:
我的 hdfs 位置有 1 年的数据,我想将过去 6 个月的数据复制到另一个 hdfs 位置。 是否可以直接从 hdfs 命令复制仅 6 个月的数据,还是我们需要编写 shell 脚本来复制过去 6 个月的数据?
我已尝试使用 hdfs 命令执行此操作,但没有成功。
我尝试使用下面的 shell 脚本,它工作正常,直到创建 TempFile 但抛出错误
$ sh scriptnew.sh
scriptnew.sh: line 8: syntax error: unexpected end of file
并且脚本不会进一步执行。
下面是我使用的shell脚本。
#!/bin/bash
hdfs dfs -ls /hive/warehouse/data.db/all_history/ |awk 'BEGIN{ SIXMON=60*60*24*180; "date +%s" | getline NOW } { cmd="date -d'\''"$6" "$7"'\'' +%s"; cmd | getline WHEN; DIFF=NOW-SIXMON; if(WHEN > DIFF){print $8}}' >> TempFile.txt
cat TempFile.txt |while read line
do
echo $i
hdfs dfs -cp -p $line /user/can_anns/all_history_copy/;
done
可能是什么错误以及如何解决?
【问题讨论】:
标签: shell hadoop copy hdfs distcp