有人能解释一下如何在Pigscript中获得下面的输出吗
我的输入文件如下
a.txt
aaa.kyl,data,data
bbb.kkk,data,data
cccccc.hj,data,data
qa.dff,data,data我正在像这样写pig脚本
A = LOAD 'a.txt' USING PigStorage(',') AS(a1:chararray,a2:chararray,a3:chararray);
B = FOREACH A GENERATE FLATTEN(STRSPLIT(a1)),a2,a3;我不知道该怎么做..我需要像这样输出below.Basically,我需要第一个原子中点符号后面的所有字符
(kyl,data,data)
(kkk,data,data)
(hj,data,data)
(dff,data,data)有人能给我这个的代码吗?
发布于 2014-07-28 00:17:52
这是你需要做的-
这是pig解析例程中的一个转义问题,当它遇到点时,因为它被视为一个运算符,请参阅此链接以获取更多信息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;希望这能有所帮助。
发布于 2014-07-28 17:31:10
您可以通过以下命令尝试使用STRSPLIT(),
A = LOAD 'C:\\Users\\Ren\\Desktop\\file' USING PigStorage(',') AS(a1:chararray,a2:chararray,a3:chararray);
B = foreach A generate SUBSTRING(a1,INDEXOF(a1,'.',0)+1,(int)SIZE(a1)),a2,a3; 发布于 2014-07-28 09:34:08
A = LOAD 'a.txt' USING PigStorage(',') AS(a1:chararray,a2:chararray,a3:chararray);
B = FOREACH A GENERATE FLATTEN(STRSPLIT(a1,'.')),a2,a3;这将把a1分成点前和点后两部分,从中你可以选择后点运算符。
C = foreach B generate $1,$2,$3;其中$1位于点运算符之后
https://stackoverflow.com/questions/24981431
复制相似问题