为了账号安全,请及时绑定邮箱和手机立即绑定

Hadoop流程记录如何跨块边界分割?

Hadoop流程记录如何跨块边界分割?

Hadoop流程记录如何跨块边界分割?根据 Hadoop - The Definitive GuideFileInputFormats定义的逻辑记录通常不适合HDFS块。例如,TextInputFormat的逻辑记录是行,它们将经常跨越HDFS边界。这与你的程序的功能没有关系 - 例如,线路不会丢失或损坏 - 但它值得了解,因为它确实意味着数据本地映射(即,与它们在同一主机上运行的映射)输入数据)将执行一些远程读取。这导致的轻微开销通常不显着。假设记录行分为两个块(b1和b2)。处理第一个块(b1)的映射器将注意到最后一行没有EOL分隔符,并从下一个数据块中取出剩余的行(b2)。映射器如何处理第二个块(b2)如何确定第一个记录是不完整的并且应该从块(b2)中的第二个记录开始处理?
查看完整描述

3 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

我认为如下:InputFormat负责将数据拆分为逻辑拆分,同时考虑到数据的性质。
没有什么可以阻止它这样做,虽然它可以为作业增加显着的延迟 - 围绕所需的分割大小边界的所有逻辑和读取都将在jobtracker中发生。 
最简单的记录感知输入格式是TextInputFormat。它的工作原理如下(据我从代码中理解) - 输入格式按大小创建拆分,无论行如何,但LineRecordReader始终:
a)跳过拆分中的第一行(或部分),如果不是第一次分割
b)在分割的边界之后读取一行(如果数据可用,那么它不是最后一次分割)。

查看完整回答
反对 回复 2019-07-25
  • 3 回答
  • 0 关注
  • 597 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信