首页 > 解决方案 > 将文件从 Hadoop 多个目录复制到边缘节点文件夹

问题描述

我在hadoop中有多个目录如下

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

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

sample.txt
sample_1.txt
sample_2.txt

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

标签: bashshellhadoophdfs

解决方案


用于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 来做同样的事情


推荐阅读