我的数据格式使用\ 0而不是新行。所以默认的hadoop textLine阅读器不起作用。 如何配置它以读取由特殊字符分隔的行?
如果无法配置LineReader,也许可以应用特定的流处理器(tr“\ 0”“\ n”),不知道如何执行此操作。
答案 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