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

Apache pig 如何从Pig的STRSPLIT函数中提取第一个元素?,apache-pig,Apache Pig,如何从pig的STRSPLIT函数的结果中访问第一个元素?我的pig命令如下所示 A = FOREACH mydata GENERATE STRSPLIT(myfield,'.',2) as myfield myfield的值类似于john.doe,因此STRSPLIT应该返回john,doe,但我只希望在本例中返回第一个元素john作为输出的一部分。基本上STRSPLIT总是根据传递的分隔符分割整个字符串,并且您没有控制权在同一行中单独过滤第一个元素。一个选择是 A = FOREACH my

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

A = FOREACH mydata GENERATE STRSPLIT(myfield,'.',2) as myfield
myfield的值类似于john.doe,因此STRSPLIT应该返回john,doe,但我只希望在本例中返回第一个元素john作为输出的一部分。

基本上STRSPLIT总是根据传递的分隔符分割整个字符串,并且您没有控制权在同一行中单独过滤第一个元素。一个选择是

A = FOREACH mydata GENERATE FLATTEN(STRSPLIT(myfield,'\\.',2)) as myfield;
B = FOREACH A GENERATE myfield;
DUMP B;
在STRSPLIT中,第二个参数是基于正则表达式的分隔符,所以不能直接使用“.”作为分隔符,需要使用双反斜杠对其进行转义


在关系B中,我们只投影myfield,因此所有其他字段都将被丢弃,最后您将获得john作为输出。

您可以从split中选择任何元素。假设您可以通过B=FOREACH A GENERATE myfield选择第二个元素。$1;