gpt4 book ai didi

hadoop - 在 hadoop mapreduce 的 TextInputFormat 中什么是字节偏移量?键如何作为字节偏移量,值如何作为行的内容?

转载 作者:可可西里 更新时间:2023-11-01 14:45:32 26 4
gpt4 key购买 nike

在浏览 CustomInputFormat 主题时,我了解到我们有一些默认的输入格式,例如 TextInputFormat、KeyValueInputFormat、SequencefileInputFormat 和 NlineInputFormat。

对于 TextInputFormat,从记录中读取行,行的字节偏移量用作键,内容用作值。请问这个Byte Offset是什么以及line的内容如何被认为是值。

最佳答案

TextInputFormat 是默认的 InputFormat 。每条记录都是一行输入。关键,一个LongWritable ,是文件中行首的字节偏移量。值(value)是行的内容,不包括任何行终止符(例如,换行符或回车符),并被打包为一个文本对象。因此,一个包含以下文本的文件:

On the top of the Crumpetty Tree
The Quangle Wangle sat,
But his face you could not see,
On account of his Beaver Hat.

被分成四个记录的一部分。记录解释如下

键值对:

(0, On the top of the Crumpetty Tree)
(33, The Quangle Wangle sat,)
(57, But his face you could not see,)
(89, On account of his Beaver Hat.)

很明显,键不是行号。这在一般情况下是不可能实现的,因为一个文件被分成字节,而不是行,边界。拆分处理独立地。行号实际上是一个连续的概念。你必须记数当你使用它们时的行数,所以知道拆分中的行号是可能,但不在文件中

但是,文件中每一行的偏移量对于每个拆分都是独立的其他拆分,因为每个拆分都知道前面拆分的大小,只需添加这个到拆分内的偏移量以产生全局文件偏移量。偏移量通常是对于每行都需要唯一标识符的应用程序来说已经足够了。结合文件名,它在文件系统中是唯一的。当然,如果所有的线路都是固定的宽度,计算行号只是将偏移量除以宽度的问题。

关于hadoop - 在 hadoop mapreduce 的 TextInputFormat 中什么是字节偏移量?键如何作为字节偏移量,值如何作为行的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32038221/

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