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

标签 bash hadoop zip hdfs

我在 hadoop 中有一个位置,其中有不同的目录,如 dir1 dir2 等。我需要将这些不同的目录压缩为不同的 zip 文件。

我使用了以下脚本,但它不起作用。

for d in ${directory_to_move_files}/*/ ;

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

done

谁能指出正确的做法。

最佳答案

简单的解决方案是使用 hadoop fs -copyToLocal 转到您要执行的本地 linux 文件夹的父目录,并通过保存在 shell 脚本中执行以下操作 查看 FileSystem 命令 reference .

#!/bin/bash
for eachindex in */; do zip -r "${eachindex%/}.zip" "$eachindex"; done

据我了解,您的问题具有深刻的洞察力(不仅仅是 unix bash 命令和 shell 脚本)并且您只想在 hadoop 环境中使用 zip 而不是将其复制到本地 unix/linux 文件系统。

我对此进行了研究,我发现的唯一方法是使用 FUSE aka (Filesystem in Userspace) interface into HDFS 另见 MountableHDFS

我不知道它对你来说可行到什么程度。在我们的实现中,我通过将 hdfs 文件复制到本地文件系统并执行 shell 脚本来完成。

关于bash - 使用 bash 脚本在 hadoop 中压缩不同的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37324180/

相关文章:

java - 用于调用Java程序的Bash脚本

hadoop - hadoop dfs -ls给出了本地文件系统中不存在的文件夹列表

Hadoop 复制因子

linux - 维护文件内的文件和文件夹权限

bash - sed 无法将大写字母转换为小写字母

c++ - cpp 为什么 boost::thread inside for loop 没有遍历所有值并且正在推送相同的值?

java - 线程 "main"java.lang.NoClassDefFoundError : when launching pyspark 中的异常

java - 检查流是否为 zip 文件

webpack - 将 Angular-CLI 部署为 zip 存档

bash - 如何更改 bash 中 printf 命令中的小数点分隔符?