我在test.txt
中有一个名为HDFS
的文件。它包含1000
条记录。
我想将test.txt
拆分为10个包含相同记录数的小文件。
我可以在Linux
中执行此操作,如下所示
split -l $(($(wc -l < test.txt )/10 + 1)) test.txt
HDFS
中是否有类似的功能。
如何在HDFS
答案 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
确定每个拆分必须包含的行数。