Hadoop 解压缩目录中的文件并将每个文件单独移动到另一个文件夹
Hadoop unzip files in directory and move each of them individually to another folder
我正在尝试解压缩 HDFS 中的数百个文件,并将每个文件单独移动到另一个文件夹,以便可以将其加载到 Hive 中的外部 table。我尝试了以下命令,但它只在目标目录中给出了 1 个没有名称的连接文件。
!hdfs dfs -cat /user/[somedir1]/* | hadoop fs -put - /user/[somedir2]/uncompressed/
我需要(例如)100 个要解压的压缩文件,并将这些解压文件中的每一个单独移动到目标目录以用于调试目的。我不能使用另一种编程语言,因为它会使项目变得比它需要的更复杂。我认为这可以使用 hdfs 命令行来完成,我只是不知道正确的单行语法。
在 Shell.
中找到了如何完全解压缩每个单独文件的单行解决方案
for FILE in somedir1/*; do if [[ $FILE == *\.gzip ]] ; then newname='somedir2/'$(basename -s .gzip $FILE); zcat "${FILE}" > $newname; fi; done
我正在尝试解压缩 HDFS 中的数百个文件,并将每个文件单独移动到另一个文件夹,以便可以将其加载到 Hive 中的外部 table。我尝试了以下命令,但它只在目标目录中给出了 1 个没有名称的连接文件。
!hdfs dfs -cat /user/[somedir1]/* | hadoop fs -put - /user/[somedir2]/uncompressed/
我需要(例如)100 个要解压的压缩文件,并将这些解压文件中的每一个单独移动到目标目录以用于调试目的。我不能使用另一种编程语言,因为它会使项目变得比它需要的更复杂。我认为这可以使用 hdfs 命令行来完成,我只是不知道正确的单行语法。
在 Shell.
中找到了如何完全解压缩每个单独文件的单行解决方案for FILE in somedir1/*; do if [[ $FILE == *\.gzip ]] ; then newname='somedir2/'$(basename -s .gzip $FILE); zcat "${FILE}" > $newname; fi; done