我在hadoop中有一个位置,其中有不同的目录,如dir1 dir2等。我需要将这些不同的目录压缩为不同的zip文件。我使用了下面的脚本,但这不起作用。
for d in ${directory_to_move_files}/*/ ; do echo "$d" ; //zip the folders printed in echo done
有人能指出正确的方法吗。
z6psavjg1#
find ${directory_to_move_files}/* -maxdepth 1 -type d -exec zip -r {}.zip {} \;
ltqd579y2#
简单的解决方案是使用hadoop fs-copytolocal转到本地linux文件夹的父目录,在那里执行,并通过保存在shell脚本中执行下面的操作 FileSystem 命令参考。
FileSystem
# !/bin/bash for eachindex in */; do zip -r "${eachindex%/}.zip" "$eachindex"; done
据我所知,您的问题具有深刻的见解(不仅仅是unix bash命令和shell脚本),您只想在hadoop环境中使用zip,而不是通过将其复制到本地unix/linux文件系统。我对此进行了研究,唯一的方法是将fuse-aka(filesystem-in-userspace)接口应用到hdfs中,也可参见mountablehdfs我不知道这对你来说有多可行。在我们的实现中,我将hdfs文件复制到本地文件系统并执行shell脚本。
2条答案
按热度按时间z6psavjg1#
ltqd579y2#
简单的解决方案是使用hadoop fs-copytolocal转到本地linux文件夹的父目录,在那里执行,并通过保存在shell脚本中执行下面的操作
FileSystem
命令参考。据我所知,您的问题具有深刻的见解(不仅仅是unix bash命令和shell脚本),您只想在hadoop环境中使用zip,而不是通过将其复制到本地unix/linux文件系统。
我对此进行了研究,唯一的方法是将fuse-aka(filesystem-in-userspace)接口应用到hdfs中,也可参见mountablehdfs
我不知道这对你来说有多可行。在我们的实现中,我将hdfs文件复制到本地文件系统并执行shell脚本。