【问题标题】:How to read text source in hadoop separated by special character如何在hadoop中读取由特殊字符分隔的文本源
【发布时间】:2012-08-20 13:47:51
【问题描述】:

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

如果无法配置 LineReader,也许可以应用特定的流处理器(tr "\0" "\n") 不知道该怎么做。

【问题讨论】:

    标签: java hadoop mapreduce cascading


    【解决方案1】:

    为此目的有一个"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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        怎么样,使用TextDelimited 方案行得通吗? http://docs.cascading.org/cascading/1.2/javadoc/cascading/scheme/TextDelimited.html

        这样就不必编写自己的InputFormat 等。

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

        【讨论】:

          猜你喜欢
          • 2017-05-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-08
          • 1970-01-01
          相关资源
          最近更新 更多