如何解决strsplit问题-猪
| 我有以下元组H1,我想将其$ 0拆分为元组,但是我总是收到错误消息:DUMP H1:
(item32;item31;,1)
m = FOREACH H1 GENERATE STRSPLIT($0,\";\",50);
ERROR 1000:解析过程中出错。第1行第40列的词法错误。
遇到:之后:\“ \\\”; \“
有人知道脚本有什么问题吗?
解决方法
遇到这种分号时,猪解析例程中存在一个转义问题。
您可以对分号使用Unicode码转义序列:
\\u003B
。但是,也必须使用斜杠转义并将其放在单引号中。或者,您可以按照Neil的回答在多行上重写命令。在所有情况下,都必须是一个单引号字符串。
H1 = LOAD \'h1.txt\' as (splitme:chararray,name);
A1 = FOREACH H1 GENERATE STRSPLIT(splitme,\'\\\\u003B\'); -- OK
B1 = FOREACH H1 GENERATE STRSPLIT(splitme,\';\'); -- ERROR
C1 = FOREACH H1 GENERATE STRSPLIT(splitme,\':\'); -- OK
D1 = FOREACH H1 { -- OK
splitup = STRSPLIT( splitme,\';\' );
GENERATE splitup;
}
A2 = FOREACH H1 GENERATE STRSPLIT(splitme,\"\\\\u003B\"); -- ERROR
B2 = FOREACH H1 GENERATE STRSPLIT(splitme,\";\"); -- ERROR
C2 = FOREACH H1 GENERATE STRSPLIT(splitme,\":\"); -- ERROR
D2 = FOREACH H1 { -- ERROR
splitup = STRSPLIT( splitme,\";\" );
GENERATE splitup;
}
Dump H1;
(item32;item31;,1)
Dump A1;
((item32,item31))
Dump C1;
((item32;item31;))
Dump D1;
((item32,item31))
,分号上的STRSPLIT非常棘手。我通过将其放在一个块中来使其工作。
raw = LOAD \'cname.txt\' as (name,cname_string:chararray);
xx = FOREACH raw {
cname_split = STRSPLIT(cname_string,\';\');
GENERATE cname_split;
}
有趣的是,这就是我最初实现STRSPLIT()命令的方式。只有在尝试将其分割为分号后,我才遇到相同的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。