使用bash脚本在hadoop中压缩不同的目录

qyzbxkaa  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(311)

我在hadoop中有一个位置,其中有不同的目录,如dir1 dir2等。我需要将这些不同的目录压缩为不同的zip文件。
我使用了下面的脚本,但这不起作用。

for d in ${directory_to_move_files}/*/ ;

do
    echo "$d" ;
//zip the folders printed in echo

done

有人能指出正确的方法吗。

z6psavjg

z6psavjg1#

find ${directory_to_move_files}/* -maxdepth 1 -type d -exec zip -r {}.zip {} \;
ltqd579y

ltqd579y2#

简单的解决方案是使用hadoop fs-copytolocal转到本地linux文件夹的父目录,在那里执行,并通过保存在shell脚本中执行下面的操作 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脚本。

相关问题