Как запустить эксклюзивный сплит в PIG? - PullRequest
1 голос
/ 19 сентября 2011

Мне интересно: поскольку стандартное поведение реляционного оператора 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), условия которого они соответствуют.

ПРИМЕЧАНИЕ. Я знаю, что могу сделать это в два этапа, сначала разделив первое условие вместе с его дополнением, а затем разделив второе условие только на дополнение, но я надеюсь на одношаговое решение (или то, которое по крайней мере, масштабируется лучше до многих расколов), если таковой существует.

...