输入分割大小是常量还是依赖于逻辑记录?

时间:2012-07-08 00:15:47

标签: hadoop mapreduce hdfs

Hadoop权威指南说:

When you have Minimum split size 1, Maximum split size Long.MAX_VALUE, Block 
size 64MB then the Split size is 64MB.

TextInputFormat的逻辑记录是行。由于每条线的长度不同,我们如何才能将大小分成64MB?

2 个答案:

答案 0 :(得分:3)

HDFS块是字节序列。他们不了解线条或任何其他结构。 因此,您可能只有一个块(当然大小为64MB)的分割结束于一行(即不包括整个最后一行)。当你使用TextInputFormat读取它时,它会注意从下一个块读取一些字节,这样你也可以获得整个最后一行。

答案 1 :(得分:1)

始终遵循2条规则:

  1. 确定您是否在记录中间
  2. 可以超过该记录并阅读下一个完整记录
  3. 记录的前半部分是之前InputSplit的最后一条记录