如何将子目录中的文件复制到 HDFS 中的单个目录

How can I copy files in subdirectories to a single directory in HDFS

我在 Impala 中有一个外部 table,它由两列分区,因此在您访问实际数据文件之前,HDFS 目录有两级目录。 table 在元存储中已损坏,无法查询。我只想将单个 (~10k) 文件复制到一个目录中,这样我就可以删除损坏的 table,删除现有目录,然后 运行 将数据放回 table 中Impala 中的 LOAD DATA INTO table 查询。问题是我找不到只复制文件的方法,因此它们最终都在一个目录中,因为 LOAD DATA 不支持子目录加载。

结构如下:

mysub1 和 mysub2 级别有数百个目录

我已经能够获得正确的文件列表:

hadoop fs -lsr /myroot/ | grep.parq

但我不知道如何将此列表的输出传递给

hadoop fs -cp {mylist} /mynewdir/

通配符应该可以解决问题:

hdfs dfs -cp /myroot/*/*/*.parq /mynewdir

请注意,如果您不需要原始位置的文件,那么 hdfs dfs -mv 会快得多。