2012-03-14 22 views
2

私はhadoopからたくさんのファイルを取得し、それらを1つの大きなファイルにマージしようとしていますが、各ドキュメントの間に改行を入れたいと思います。 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 \ 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> 
関連する問題