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

标签 linux bash hadoop split hdfs

我在 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/

相关文章:

php - 如何使用 crontab Linux 在 Controller 中执行 php 函数

linux - 我如何知道Linux IO操作历史?

用于使用可选文本快速提交的 Git 别名

java - YARN 上可用的物理内核数和 VCores 之间的关系?

Apache Mahout - 如何将数据集对象保存到 HDFS?

linux - 使用 bash 获取字符串的一部分

php - 使用 php 脚本更新 SVN

linux - TMOUT后如何清除终端窗口

linux - 显示在 sh 文件中声明的所有变量

hadoop - 在Hive中传递参数不起作用