将文件从 Hadoop 多个目录复制到边缘节点文件夹

Copy files from Hadoop multiple directories to edge node folder

我在 hadoop 中有多个目录如下

/env/hdfsdata/ob/sample/partfile..
/env/hdfsdata/ob/sample_1/partfile..
/env/hdfsdata/ob/sample_2/partfile..

我是 hadoop 和 shell 脚本的新手,正在寻找一种方法将样本目录 (sample*) 中的文件复制到边缘节点文件夹位置,并且文件应按如下方式命名,假设样本是文件名前缀

sample.txt
sample_1.txt
sample_2.txt

将文件复制到 edgenode 后,必须在 hadoop 中删除相应目录的位置。我曾尝试使用通配符列出目录,然后使用 shell 脚本和 cat 命令处理这些目录,但面临找不到此类目录的问题。

使用 getmerge 从多个文件中创建一个文件

#!/bin/bash

dl() {
    FILENAME=
    BASE_DIR='/env/hdfsdata/ob'
    hadoop fs -getmerge "${BASE_DIR}/${FILENAME}/*" "${FILENAME}.txt"
}

FILENAME='sample'
dl "${FILENAME}"  # sample
for i in `seq 2`; do 
   dl "${FILENAME}_${i}"  # sample_1, sample_2
done 

new to hadoop and shell scripting

您可以使用 Java/Python/etc 做同样的事情