如果我使用了错误的标准猪名,请原谅我,因为我是新手。
我在 Pig(X 和 Y)中有 2 个数据框。两者都有变量:j1 和 j2。我正在做以下操作:
A = JOIN X by (j1) left outer, Y by (j1);
SPLIT A into B (IF Y::j1 IS NULL), C otherwise;
D = FOREACH B GENERATE X::j2;
在这里,如果我们做 DUMP B,那么里面就没有数据。如果我们执行 DUMP C,则会出现数据 d1。但是当我执行 DUMP D 时,会出现相同的数据 d1,这是连线的,因为 B 没有任何数据点。
有人能说出为什么会这样吗?
注意:我尝试过:
存储 B 然后手动查看部分文件,但 B 中没有任何内容。
我还存储了 A,然后退出会话,然后在 grunt 和 Loaded A 中启动会话,然后执行最后两行代码(即 split 和 foreach)。当我这样做时,代码按预期工作,并且 DUMP D 没有显示任何输出数据(这是正确的)。
找到解决方案: 这实际上不是猪的问题。这是我用来读取数据并因此创建数据帧 X 和 Y 的 Jar 问题。基本上 Jar 无法正确读取 csv 文件,这在上面的连接操作中产生了问题。