如何从 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
作为输出。
如何从 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
作为输出。