【问题标题】:How does hadoop RecordReader identify recordshadoop RecordReader如何识别记录
【发布时间】:2015-10-30 20:05:52
【问题描述】:

hadoop 处理文本文件时如何识别记录? 它是基于换行符还是句号?

如果我有一个 5000 字的文本文件列表,全部在单行上,用空格分隔;没有换行符、逗号或句号。 RecordReader 的行为如何?

例如abc pqr xyz lmn qwe rew poio kjkh ascd lkyg ......

【问题讨论】:

    标签: hadoop mapreduce recordreader


    【解决方案1】:

    您可以使用textinputformat.record.delimiter 在配置中设置分隔符。

    如果未提供,它将回退以根据以下之一拆分行:'\n' (LF) , '\r' (CR), or '\r\n' (CR+LF)。 因此,您的示例行将作为一条记录读取。

    您可以阅读LineReaderTextInputFormatLineRecordReader的代码了解更多详情。

    【讨论】:

    • 长度有限制吗?我读过如果记录跨越多个块(InputSplits),hadoop 很聪明,可以从相邻块中读取它。在我的情况下,因为没有 '\n' (LF) 、 '\r' (CR) 或 '\r\n' (CR+LF) 并且它可能跨越多个块它会读取所有块并使其一大块?
    • 有一个可配置的行长度限制,但默认设置为Integer.MAX_VALUE。如果你不覆盖它,它将读取块,直到找到一个分隔符。
    猜你喜欢
    • 1970-01-01
    • 2015-10-29
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多