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

f0brbegy  于 2021-05-31  发布在  Hadoop
关注(0)|答案(1)|浏览(339)

我在hadoop中有如下多个目录

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

我对hadoop和shell脚本还比较陌生,正在寻找一种方法,将sample目录(sample*)中的文件复制到边缘节点文件夹位置,并且假设sample是文件名的前缀,那么文件的名称应该如下所示

sample.txt
sample_1.txt
sample_2.txt

一旦文件被复制到edgenode上,就必须在hadoop中删除相应的目录。我曾尝试使用列出目录使用通配符,然后处理这些使用shell脚本和cat命令,但面临的问题没有这样的目录找到。

41zrol4v

41zrol4v1#

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


# !/bin/bash

dl() {
    FILENAME=$1
    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

hadoop和shell脚本新手
您可以使用java/python/etc做完全相同的事情

相关问题