StrSplit in Pig功能

Sur*_*aja 5 apache-pig

有人可以解释我在Pigscript中得到以下输出

我的输入文件如下

A.TXT

aaa.kyl,data,data
bbb.kkk,data,data
cccccc.hj,data,data
qa.dff,data,data
Run Code Online (Sandbox Code Playgroud)

我正在写这样的猪脚本

A = LOAD 'a.txt' USING PigStorage(',') AS(a1:chararray,a2:chararray,a3:chararray);
B = FOREACH A GENERATE FLATTEN(STRSPLIT(a1)),a2,a3;
Run Code Online (Sandbox Code Playgroud)

我不知道如何继续这个...我需要像下面这样放.基本上我需要在第一个原子点符号后面的所有字符

(kyl,data,data)
(kkk,data,data)
(hj,data,data)
(dff,data,data)
Run Code Online (Sandbox Code Playgroud)

有人可以给我这个代码

小智 8

这是你需要做的 -

这是猪解析例程中遇到点的一个逃避问题,因为它被视为操作符,请参阅此链接以获取更多信息Dot Operator.

您可以使用unicode转义序列代替点:\ u002E.但是,这也必须是斜线转义并放入一个带引号的字符串中.

以下代码将为您完成工作,您可以根据自己的方便进行微调 -

A = LOAD 'a.txt' USING PigStorage(',') AS(a1:chararray,a2:chararray,a3:chararray);
B = FOREACH A GENERATE FLATTEN(STRSPLIT(a1,'\\u002E')) as (a1:chararray, a1of1:chararray),a2,a3;
C = FOREACH B GENERATE a1of1,a2,a3;
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.