如何读取由特殊字符分隔的hadoop中的文本源

时间:2012-08-25 03:07:46

标签: java hadoop mapreduce cascading

我的数据格式使用\ 0而不是新行。所以默认的hadoop textLine阅读器不起作用。 如何配置它以读取由特殊字符分隔的行?

如果无法配置LineReader,也许可以应用特定的流处理器(tr“\ 0”“\ n”),不知道如何执行此操作。

3 个答案:

答案 0 :(得分:2)

为此目的,有一个"textinputformat.record.delimiter"配置属性。您可以通过将此属性值更改为" \ 0"来更改默认EOL(" \ n")分隔符。

有关详细信息,请转到此处:http://amalgjose.wordpress.com/2013/05/27/custom-text-input-format-record-delimiter-for-hadoop

关于更改spark中的默认分隔符也存在类似的问题,这也可能有用:Setting textinputformat.record.delimiter in spark

答案 1 :(得分:1)

您可以编写自己的InputFormat类,在\0而不是\n上拆分数据。有关如何执行此操作的演练,请在此处查看:http://developer.yahoo.com/hadoop/tutorial/module5.html#fileformat

它的要点是您需要子类化默认的InputFormat类或其任何子类,并使用自定义规则定义您自己的RecordReader。有关更多信息,可以参考InputFormat文档。

答案 2 :(得分:0)

如果使用TextDelimited计划工作怎么样? http://docs.cascading.org/cascading/1.2/javadoc/cascading/scheme/TextDelimited.html

这样可以避免编写自己的InputFormat等等。

分隔的文本示例包括 https://github.com/Cascading/Impatient/wiki/Part-2