如何从pig的STRSPLIT函数的结果中访问第一个元素?我的猪命令如下所示。
A = FOREACH mydata GENERATE STRSPLIT(myfield,'.',2) as myfield
" myfield"的价值看起来像这样" john.doe",所以STRSPLIT应该返回(" john"," doe"),但我只想要第一个元素(" john"在这种情况下)作为输出的一部分返回。
答案 0 :(得分:2)
基本上STRSPLIT
总是根据您传递的分隔符拆分整个字符串,而您无法控制在同一行中单独过滤第一个元素。一个选项可能是
A = FOREACH mydata GENERATE FLATTEN(STRSPLIT(myfield,'\\.',2)) as myfield;
B = FOREACH A GENERATE myfield;
DUMP B;
在STRSPLIT
中,第二个参数是基于正则表达式的分隔符,因此您无法直接使用“。”作为分隔符,你需要用双反斜杠来逃避它。
在关系B
中,我们仅投影myfield
,因此所有其他字段都将被丢弃,最后您将获得john
作为输出。