Pig 使用自定义行/记录分隔符存储文件

Posted

技术标签:

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

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

【问题讨论】:

【参考方案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 会处理它。

以上是关于Pig 使用自定义行/记录分隔符存储文件的主要内容,如果未能解决你的问题,请参考以下文章

WCF 自定义行为的依赖注入

xlform 使用笔尖的自定义行

drupal 7 使用模块视图自定义行样式

使用自定义的行分隔符,从StreamReader中读取一行字符串

具有自定义行布局的 ListView - Android

在 Android Studio 中向列表视图添加自定义行