想要编写(或使用现有的?)UDF 来读取具有多字符分隔符的文件

Posted

技术标签:

【中文标题】想要编写(或使用现有的?)UDF 来读取具有多字符分隔符的文件【英文标题】:Want to write (or use an existing?) UDF to read a file with a multi-character delimiter 【发布时间】:2016-02-03 15:57:10 【问题描述】:

我想在 Pig 中读取一个使用多字符分隔符分隔字段的数据文件(我不需要以这种方式编写文件)。所以我的猪脚本看起来像:

myData = LOAD 'myFile' USING PigStorage(‘~|~’) as (col1:chararray, col2:chararray); 

我的问题是 PigStorage 不支持多字符分隔符。

可能的解决方案是:

    现有的 UDF。有吗? 自定义 UDF,基于读取文件的 UDF 工作示例。

关于第二点,我看过大量复制的pig.apache.org example,但问题是这段代码无法编译(除了明显的语法错误,所有导入语句都丢失了,所以我没有'不知道需要导入哪个版本的类!)

【问题讨论】:

【参考方案1】:

如果你知道有多少字段,你可以使用org.apache.pig.piggybank.storage.MyRegExLoader 1

但是你需要写一个可以解析整行的正则表达式,所以不如PigStorage方便。

【讨论】:

以上是关于想要编写(或使用现有的?)UDF 来读取具有多字符分隔符的文件的主要内容,如果未能解决你的问题,请参考以下文章

使用正则表达式将字段拆分为数组的 Bash 脚本用于多字符分隔符

警告:多字符字符常量 [-Wmultichar]

随机单词 Bash 脚本,如果提供一个数字作为第一个命令行参数,那么它将仅从具有那么多字符的单词中选择

关于Unicode和多字符字集。

基于卷积神经网络的多字符类型验证码识别

标准 C 库中是不是有 strchr() 的多字符版本?