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

How do I extract the first element from Pig's STRSPLIT function?

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

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

"myfield" 的值看起来像这样 "john.doe",所以 STRSPLIT 应该 return("john","doe"),但我只想要第一个元素(在本例中为 "john")作为输出的一部分 return。

基本上 STRSPLIT 总是根据您传递的定界符拆分整个字符串,您无法单独过滤同一行中的第一个元素。一个选项可以是

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

STRSPLIT中,第二个参数是基于正则表达式的分隔符,所以你不能直接使用'.'。作为分隔符,您需要使用双反斜杠将其转义。

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