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



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

如果无法配置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中的默认分隔符,也有一个类似的问题,这可能也很有用:在spark 中设置textinputformat.record.delimiter

您可以编写自己的InputFormat类,在而不是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

相关内容

  • 没有找到相关文章

最新更新