我想知道:因为PIG中SPLIT关系运算符的默认行为是非排他性地分割关系(即如果一行符合2个或更多关系的条件,它将被放入所有关系中),是有没有办法专门拆分?我的意思是,我想运行一个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>
在这种情况下&lt; 4,2,1&gt;和&lt; 4,3,3&gt;进入两个关系。我希望每个人只能进入他们适合自己条件的第一个关系(A)。
注意:我知道我可以分两步完成这个步骤:首先将第一个条件与它的补码分开,然后将第二个条件除掉补码,但我希望得到一个解决方案(或者一个如果存在,至少可以更好地扩展到许多分裂。