将文件从 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 做同样的事情
我在 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 做同样的事情