我试图从hadoop获取一堆文件并将它们合并到一个大文件中,我想在每个文档之间有一个换行符。
hadoop fs -getmerge <src> <localdst> addnl
应该做到这一点,但似乎无论如何都不会添加换行符!
我也试过了
hadoop fs -getmerge <src> <localdst> -nl
看到此内容后:https://issues.apache.org/jira/browse/HADOOP-7340
但这也行不通。我错过了什么吗?这对任何人都有用吗?
谢谢!
答案 0 :(得分:1)
如果您对编写一些代码来执行此操作感到满意(并且不依赖于shell命令),则可以修改当前的FsShell.copyMergeToLocal方法(这是hadoop fs -getmerge正在调用的方法)以包含自定义文件分隔符字符串(在您的情况下为“\ n \ n”):
void copyMergeToLocal(String srcf, Path dst, String fileSeparatorString) throws IOException {
Path srcPath = new Path(srcf);
FileSystem srcFs = srcPath.getFileSystem(getConf());
Path [] srcs = FileUtil.stat2Paths(srcFs.globStatus(srcPath),
srcPath);
for(int i=0; i<srcs.length; i++) {
FileUtil.copyMerge(srcFs, srcs[i],
FileSystem.getLocal(getConf()), dst, false,
getConf(), fileSeparatorString);
}
}
答案 1 :(得分:1)
hadoop fs -getmerge <src> <localdst> true
答案 2 :(得分:0)
以下命令对我有用:
hdfs dfs -getmerge -nl <src> <localdst>