bash - 将文件从 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 命令处理这些目录,但面临找不到此类目录的问题。
解决方案
用于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 来做同样的事情
推荐阅读
- javascript - javascript style.display 阻止两个切换在一起
- reactjs - React hooks 状态未更新
- excel - 使用 2 张纸,如果单元格值匹配,则从另一列中引入日期值
- authentication - 如何向 JWT 令牌生命周期验证添加额外检查?
- angular - Angular 7:'找不到名称''
- android - 空对象引用上的 AlertDialog 按钮侦听器
- r - 自动识别变量之前在 R 的回归中已被分解
- c# - 控制器中的 Asp.Net Core 单元测试删除方法
- wordpress - htaccess | 阿帕奇 | 最佳实践 | WordPress 插件 | 允许覆盖
- python - 如果为 key 关键字参数提供 map 和 lambda 组合,Python sorted() 将引发错误