豬分析例程遇到這個分號時有一個轉義問題。
您可以對分號使用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))
瞭解它,但它很棘手:m = FOREACH H1 GENERATE STRSPLIT($ 0,'\\ u003B',50); – ohana 2011-04-15 05:33:19
你應該爲你的問題提供一個答案,然後接受它 – 2011-04-15 17:52:42