gpt4 book ai didi

java - dfs.block.size 用于本地 hadoop 作业?

转载 作者:可可西里 更新时间:2023-11-01 15:07:22 27 4
gpt4 key购买 nike

我想运行一个 hadoop 单元测试,使用本地文件系统模式...我希望看到几个 part-m-* 文件被写入磁盘(而不是只有 1 个)。但是,由于它只是一个测试,我不想处理 64M 的数据(我相信默认大小是每个 block ~64megs)。

在分布式模式下我们可以使用

dfs.block.size

我想知道是否有一种方法可以让我的本地文件系统写出小的 part-m 文件,也就是说,这样我的单元测试将用几个(尽管非常小)文件模拟大规模数据的内容。

最佳答案

假设您的输入格式可以处理可拆分文件(参见org.apache.hadoop.mapreduce.lib.input.FileInputFormat.isSplitable(JobContext, Path) 方法),您可以修改输入拆分使用多个映射器处理较小文件的大小(我假设您正在使用新的 API mapreduce 包):

例如,如果您正在使用 TextInputFormat(或大多数扩展 FileInputFormat 的输入格式),您可以调用静态 util 方法:

  • FileInputFormat.setMaxInputSplitSize(Job, long)
  • FileInputFormat.setMinInputSplitSize(Job, long)

long 参数是以字节为单位的拆分大小,因此只需设置为您想要的大小

在幕后,这些方法设置了以下作业配置属性:

  • mapred.min.split.size
  • mapred.max.split.size

最后请注意,某些输入格式可能会覆盖 FileInputFormat.getFormatMinSplitSize() 方法(FileInputFormat 默认为 1 个字节),因此如果您设置一个值,请谨慎而 hadoop 似乎忽略了它。

最后一点 - 你有没有考虑过 MRUnit http://incubator.apache.org/mrunit/用于对您的 MR 代码进行实际的“单元”测试?

关于java - dfs.block.size 用于本地 hadoop 作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9773931/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com