我在 HDFS
中有一个名为 test.txt
的文件。它包含 1000
条记录。
我想将 test.txt
分成 10 个包含相同记录数的小文件。
我可以在 Linux
中执行此操作,如下所示
split -l $(($(wc -l < test.txt )/10 + 1)) test.txt
在HDFS
中是否有类似的功能。
如何在 HDFS
中实现此目的
最佳答案
输入格式为 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
确定每个拆分必须包含的行数。
关于linux - 将文件拆分为 HDFS 中的小文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43747834/