2017-05-02 18 views
2

HDFStest.txtというファイルがあります。それは1000レコードを含んでいます。ファイルをHDFS内の小さなファイルに分割します

test.txtを10個の小さなファイルに分割して、同じレコードが含まれないようにしたいと考えています。

split -l $(($(wc -l < test.txt)/10 + 1)) test.txt 

の下HDFSで同様の機能がありますように私はLinuxでこれを行うことができます。

は私がHDFS

答えて

1

NLineInputFormatとして入力フォーマットを持つ単純なHadoopのストリーミングジョブでこれを達成するにはどうすればよいが、これは成し遂げることができます。

hadoop jar $HADOOP_HOME/share/hadoop/tools/lib/hadoop-streaming-<version>.jar \ 
    -Dmapreduce.input.lineinputformat.linespermap=10 \ 
    -Dmapreduce.job.reduces=0 \ 
    -inputformat org.apache.hadoop.mapred.lib.NLineInputFormat \ 
    -mapper org.apache.hadoop.mapred.lib.IdentityMapper \ 
    -input /test.txt \ 
    -output /splitted_output 

ここで、プロパティーmapreduce.input.lineinputformat.linespermapは、分割に含める必要がある行数を決定します。

関連する問題