我的数据格式使用 \0 而不是换行符。所以默认的 hadoop textLine 阅读器不起作用。如何将其配置为读取由特殊字符分隔的行?
如果无法配置 LineReader,也许可以应用特定的流处理器(tr "\0" "\n") 不确定如何执行此操作。
"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
您可以编写自己的 InputFormat 类来拆分数据\0
而不是\n
. 有关如何执行此操作的演练,请在此处查看:http: //developer.yahoo.com/hadoop/tutorial/module5.html#fileformat
它的要点是您需要继承默认InputFormat类或其任何子类,并RecordReader
使用自定义规则定义您自己的。有关更多信息,您可以参考 InputFormat 文档。
怎么样,使用TextDelimited
方案会起作用吗?http://docs.cascading.org/cascading/1.2/javadoc/cascading/scheme/TextDelimited.html
这避免了必须编写自己的InputFormat
等。
分隔文本的示例位于 https://github.com/Cascading/Impatient/wiki/Part-2