Hay un problema de escape en las rutinas de análisis porcino cuando se encuentra con este punto y coma.
Puede usar una secuencia de escape Unicode para un punto y coma: \u003B
. Sin embargo, esto también debe ser una barra escapada y poner en una sola cadena entre comillas. Alternativamente, puede volver a escribir el comando en varias líneas, según la respuesta de Neil. En todos los casos, esta debe ser una cadena única entre comillas.
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))
lo tengo, es complicado aunque: m = FOREACH H1 GENERAR STRSPLIT ($ 0, '\\ u003B', 50); – ohana
debe dar una respuesta a su pregunta y luego aceptarla –