据我所知ARequest
,此命令可将复制文件复制到HDFS。我不想手动复制,因为我每周从源获取文件,每次都很难手动复制。
以下是我的要求。
当我将copyFromLocal <localSrc> <dest>
放到本地文件系统路径时:file.zip
文件应自动从本地吸收并复制到HDFS路径,如/usr/data/ingestion/
有可能吗?或任何框架支持这样的功能?
由于
答案 0 :(得分:0)
您可以像这样编写shell脚本......并安排每天从cron或手动运行:
#!/bin/sh
local_zip_dir=/home/username/data
hdfs_zip_dir=/user/cloudera/data
for local_zip_file in $(ls -1 $local_zip_dir/*.zip)
do
file_name=$(echo $local_zip_file|awk -F '/' '{print $NF}')
if hadoop fs -test –e $hdfs_zip_dir/$file_name;
then
echo "$local_zip_file already copied to hdfs"
else
echo "Coping $local_zip_file to $hdfs_zip_dir"
hadoop fs -copyFromLocal $local_zip_file $hdfs_zip_dir/$file_name
fi
done
P.S:修复语法错误,如果没有,因为未经过移动应用程序测试和回答
此外,在您在本地路径上删除zip文件的步骤中,您可以删除空文件:
例如,你在当地的辍学应该做这两步:
original file to copy: file.zip
empty file copied as: file.zip.ready
如果有*.ready
个文件,那么shell脚本应该每隔一五分钟检入一次,如果是,那么只需复制file.zip
并删除.ready
文件后复制到{{1 }}:
hdfs