如何从pig的strsplit函数中提取第一个元素?

bpzcxfmw  于 2021-06-25  发布在  Pig
关注(0)|答案(1)|浏览(516)

如何从pig的strsplit函数的结果中访问第一个元素?我的Pig命令如下所示。

A = FOREACH mydata GENERATE STRSPLIT(myfield,'.',2) as myfield

“myfield”的值类似于“john.doe”,因此strsplit应该返回(“john”,“doe”),但我只希望第一个元素(“john”在本例中)作为输出的一部分返回。

lvjbypge

lvjbypge1#

基本上 STRSPLIT 始终根据传递的分隔符拆分整个字符串,并且您没有控制权单独筛选同一行中的第一个元素。一种选择是

A = FOREACH mydata GENERATE FLATTEN(STRSPLIT(myfield,'\\.',2)) as myfield;
B = FOREACH A GENERATE myfield;
DUMP B;

STRSPLIT ,第二个参数是基于regex的分隔符,因此不能直接使用“.”作为分隔符,需要使用双反斜杠对其进行转义。
在关系中 B 我们只是在投射 myfield ,因此所有其他字段都将被丢弃,最后您将得到 john 作为输出。

相关问题