2012-03-14 1 views
2

나는 hadoop에서 여러 파일을 가져 와서 하나의 큰 파일로 병합하려고하고 있으며 각 문서 사이에 줄 바꾸기를 원합니다. hadoop fs -getmerge <src> <localdst> addnl 정확히 그 일을해야하지만, 상관없이 개행을 추가하는 것 같지 않습니다! 나는 또한 시도했다 hadoop fs -getmerge <src> <localdst> -nl 이것을 본 후에 : https : //issues.apache.org/jira/browse/HADOOP-7340 그러나 이것도 작동하지 않습니다. 내가 놓친 게 있니? 누구에게도 효과가 있습니까?hadoop getmerge를 사용하여 문서간에 새 줄 추가하기

감사합니다.

답변

1

셸 명령에 의존하지 않고 코드를 작성하는 데 만족 스럽다면 현재의 FsShell.copyMergeToLocal 메소드 (hadoop fs -getmerge가 호출하는 것)를 수정하여 사용자 정의를 포함시킬 수 있습니다 파일 단락 캐릭터 (귀하의 경우 "\ 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
hadoop fs -getmerge <src> <localdst> true 
0

이 나를 위해 일한 :

hdfs dfs -getmerge -nl <src> <localdst>