Мне интересно: поскольку стандартное поведение реляционного оператора SPLIT в PIG заключается в разделении отношений неисключительно (т. Е. Если строка соответствует условиям для двух или более отношений, она будет помещена во все из них), есть ли способ разделить исключительно вместо этого? Я имею в виду, что я хотел бы запустить оператор SPLIT, который поместил бы строку в первое отношение, к условиям которого он подходит, и затем не поместил бы его в другое отношение, даже если оно соответствует последующим указанным отношениям условий.
Пример нормального разбиения:
A =
<1, 2, 3>
<4, 2, 1>
<8, 3, 4>
<4, 3, 3>
<7, 2, 5>
<8, 4, 3>
затем
SPLIT A INTO X IF $0 < 7, Y IF ($0 > 2 AND $0<> 7);
Дает:
X =
<1, 2, 3>
<4, 2, 1>
<4, 3, 3>
и
Y =
<4, 2, 1>
<8, 3, 4>
<4, 3, 3>
<8, 4, 3>
В этом случае <4,2,1> и <4,3,3> идут в обоих отношениях. Я хотел бы, чтобы каждый пошел только к первому отношению (A), условия которого они соответствуют.
ПРИМЕЧАНИЕ. Я знаю, что могу сделать это в два этапа, сначала разделив первое условие вместе с его дополнением, а затем разделив второе условие только на дополнение, но я надеюсь на одношаговое решение (или то, которое по крайней мере, масштабируется лучше до многих расколов), если таковой существует.