将文件拆分为HDFS中的小文件

时间:2017-05-02 21:52:13

标签: linux bash hadoop split hdfs

我在test.txt中有一个名为HDFS的文件。它包含1000条记录。

我想将test.txt拆分为10个包含相同记录数的小文件。

我可以在Linux中执行此操作,如下所示

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

HDFS中是否有类似的功能。

如何在HDFS

中实现这一目标

1 个答案:

答案 0 :(得分:1)

输入格式为NLineInputFormat的简单Hadoop Streaming作业可以完成此任务。

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确定每个拆分必须包含的行数。