hadoop - 我如何在 hadoop 中处理大量小文件?

标签 hadoop

我是 hadoop 的新手,我在 wordcount 示例中处理大量小文件。 它需要大量 map task 并导致我的执行速度变慢。

如何减少 map task 的数量??

如果我的问题的最佳解决方案是将小文件转换为较大的文件,我该如何转换它们?

最佳答案

如果您使用的是 TextInputFormat 之类的东西,问题是每个文件至少有 1 个拆分,因此 map 数量的上限是文件数量,在您的情况下如果你有许多非常小的文件,你最终会得到许多映射器来处理每个非常小的数据。

为了解决这个问题,您应该使用 CombineFileInputFormat 它将多个文件打包到同一个拆分中(我认为达到 block 大小限制),因此使用该格式映射器的数量将是独立的文件数量的多少,将仅取决于数据量。

您必须通过从 CombineFileInputFormt 扩展来创建您自己的输入格式,您可以找到一个实现 here .定义了 InputFormat 后,让我们像在链接 CombinedInputFormat 中那样调用它,您可以通过以下方式告诉您的工作使用它:

job.setInputFormatClass(CombinedInputFormat.class);

关于hadoop - 我如何在 hadoop 中处理大量小文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14541759/

相关文章:

hadoop - 一个查询运行map reduce,另一个查询不运行map reduce

hadoop - 如何在Windows7的Cygwin中安装sqoop?

hadoop - 在 Eclipse Map/Reduce 位置中,New Hadoop 位置没有响应?

hadoop - 在hbase中创建表

java - Hortonworks HDFS 名称节点在启动时出现 tryLock 问题

parsing - 使用 Hadoop 解析用户代理

hadoop - Hive 查询 - 无法找到评分超过 30 的电影,平均评分是多少

hadoop - Sqoop增量加载到分区配置单元表中

hadoop - Nutch 非法参数异常 : Row length 41221 is > 32767

sql - 如何在 impala 中使用 distinct