Hadoop 解压缩目录中的文件并将每个文件单独移动到另一个文件夹

Posted

技术标签:

【中文标题】Hadoop 解压缩目录中的文件并将每个文件单独移动到另一个文件夹【英文标题】:Hadoop unzip files in directory and move each of them individually to another folder 【发布时间】:2022-01-08 20:06:02 【问题描述】:

我正在尝试解压缩 HDFS 中的数百个文件并将每个文件单独移动到另一个文件夹,以便可以将其加载到 Hive 中的外部表中。我尝试了以下命令,但它只在目标目录中提供了 1 个没有名称的连接文件。

!hdfs dfs -cat /user/[somedir1]/* | hadoop fs -put - /user/[somedir2]/uncompressed/

我需要(例如)100 个要解压缩的压缩文件,并将每个解压缩文件分别移动到目标目录以进行调试。我不能使用另一种编程语言,因为它会使项目变得比需要的更复杂。我认为这可以使用 hdfs 命令行来完成,我只是不知道正确的单行语法。

【问题讨论】:

你需要遍历目录中的每个文件。 这能回答你的问题吗? How to unzip .gz files in a new directory in hadoop? 【参考方案1】:

找到了如何在Shell中完全解压每个单独文件的单行解决方案。

for FILE in somedir1/*; do if [[ $FILE == *\.gzip ]] ; then newname='somedir2/'$(basename -s .gzip $FILE); zcat "$FILE" > $newname; fi; done

【讨论】:

以上是关于Hadoop 解压缩目录中的文件并将每个文件单独移动到另一个文件夹的主要内容,如果未能解决你的问题,请参考以下文章

使用 Hadoop 以编程方式解压缩包含多个不相关 csv 文件的文件

解压缩文件将文件转换为字节

解压缩 .gz 文件并将它们存储在 .tar.gz 存档中

如何将文件夹中的每个 X 子文件夹压缩为单独的 rar 文件

如何解压缩相同子目录但不同文件夹中的文件

解压缩并将内容推送到表格视图中