仅使用 Pig Latin 在 Pig 中加载具有不同分隔符的非结构化数据
Posted
技术标签:
【中文标题】仅使用 Pig Latin 在 Pig 中加载具有不同分隔符的非结构化数据【英文标题】:Loading unstructered data with different delimiters in Pig using PigLatin only 【发布时间】:2015-06-25 21:58:08 【问题描述】:您好,我正在尝试仅使用 PigLatin 将以下数据(包括不同的分隔符并且是非结构化的)加载到 Pig 中,而不使用 Java 准备数据。
输入:
1234 #one,#two,#three
5679 #one,#two
1234 #one
输出我要查找的内容:
1234 #one
1234 #two
1234 #three
5678 #one
5678 #two
1234 #one
有什么想法吗?这在Pig中甚至可能吗?提前非常感谢!
【问题讨论】:
我们可以使用 ' ' (空格作为分隔符)加载数据,然后使用 TOKENIZE 函数格式化逗号分隔的值并展平数据以达到目的。 【参考方案1】:猪脚本:
A = LOAD 'a.csv' AS USING PigStorage(' ') (key:chararray, value:chararray);
B = FOREACH A GENERATE key, FLATTEN(TOKENIZE(value, ','));
DUMP B;
输入:a.csv:
1234 #one,#two,#three
5679 #one,#two
1234 #one
输出:转储 B:
(1234,#one)
(1234,#two)
(1234,#three)
(5679,#one)
(5679,#two)
(1234,#one)
【讨论】:
以上是关于仅使用 Pig Latin 在 Pig 中加载具有不同分隔符的非结构化数据的主要内容,如果未能解决你的问题,请参考以下文章
基于感兴趣的日期范围作为参数输入限制在 Pig Latin 中加载日志文件