【问题标题】:Pig Store the file with custom row/record delimiterPig 使用自定义行/记录分隔符存储文件
【发布时间】:2016-08-04 20:16:10
【问题描述】:

我有一个以 ctrlB 作为记录分隔符的文件。我能够通过在猪存储中覆盖 LoaderInputFormat 类和 getInputFormat() 方法来读取猪中的文件。但是我无法使用 ctrlB 作为记录分隔符来存储文件。

【问题讨论】:

    标签: hadoop mapreduce apache-pig


    【解决方案1】:

    读取ctrl+b分隔记录

    SET textinputformat.record.delimiter '\n'
    x= LOAD 'xyz' USING PigStorage('\u0002');
    

    写入ctrl+b分隔记录-

    store x into 'y' using PigStorage('\u0002');
    

    【讨论】:

    • 嗨拉胡尔,感谢您的回答。您提供的解决方案读取并存储 CtrlB 作为字段分隔符,但我想读取和写入 CtrlB 作为行/记录分隔符。我有一个重写的 LoaderInputFormat 类,并且能够使用 CtrlB 作为行/记录分隔符读取文件,但我无法使用 CtrlB 作为行/记录分隔符来存储/写入文件
    • 所以基本上我希望 textoutputformat 的记录分隔符为 '\u0002'
    • 用于 ctr+b 分隔符:SET textinputformat.record.delimiter '\u0002'
    • 是的,这是用 ctrlB 作为记录分隔符读取文件。我想用 ctrlB 存储文件。
    • KC,我不认为您必须编写任何自定义内容才能拥有此功能。您只需在 LOAD 和 STORE 期间将 '\u0002' 作为 PigStorage 中的分隔符传递。 PigStorage 会处理它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-25
    相关资源
    最近更新 更多