首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >猪函数中的StrSplit

猪函数中的StrSplit
EN

Stack Overflow用户
提问于 2014-07-27 21:26:27
回答 3查看 11.6K关注 0票数 6

有人能解释一下如何在Pigscript中获得下面的输出吗

我的输入文件如下

a.txt

代码语言:javascript
复制
aaa.kyl,data,data
bbb.kkk,data,data
cccccc.hj,data,data
qa.dff,data,data

我正在像这样写pig脚本

代码语言:javascript
复制
A = LOAD 'a.txt' USING PigStorage(',') AS(a1:chararray,a2:chararray,a3:chararray);
B = FOREACH A GENERATE FLATTEN(STRSPLIT(a1)),a2,a3;

我不知道该怎么做..我需要像这样输出below.Basically,我需要第一个原子中点符号后面的所有字符

代码语言:javascript
复制
(kyl,data,data)
(kkk,data,data)
(hj,data,data)
(dff,data,data)

有人能给我这个的代码吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-28 00:17:52

这是你需要做的-

这是pig解析例程中的一个转义问题,当它遇到点时,因为它被视为一个运算符,请参阅此链接以获取更多信息Dot Operator

您可以对点使用unicode转义序列:\u002E。然而,这也必须是斜杠转义的,并放在一个带引号的字符串中。

下面的代码将为您完成这项工作,您可以根据您的方便对其进行微调-

代码语言:javascript
复制
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;

希望这能有所帮助。

票数 10
EN

Stack Overflow用户

发布于 2014-07-28 17:31:10

您可以通过以下命令尝试使用STRSPLIT(),

代码语言:javascript
复制
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;                                                                                 
票数 4
EN

Stack Overflow用户

发布于 2014-07-28 09:34:08

代码语言:javascript
复制
A = LOAD 'a.txt' USING PigStorage(',') AS(a1:chararray,a2:chararray,a3:chararray);

B = FOREACH A GENERATE FLATTEN(STRSPLIT(a1,'.')),a2,a3;

这将把a1分成点前和点后两部分,从中你可以选择后点运算符。

代码语言:javascript
复制
C = foreach B generate $1,$2,$3;

其中$1位于点运算符之后

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24981431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档