Pig中使用DUMP的奇怪错误

时间:2015-09-06 03:35:16

标签: hadoop apache-pig

这是我的代码和错误,在Hadoop上使用Pig,任何人都有什么好主意吗?感谢。

-- ({(3),(4),(1),(2),(7),(5),(6)},{(1),(3),(5),(12)})
A = load 'input.txt' AS (B1:bag{T:tuple(val:int)},B2:bag{T:tuple(val:int)});

DUMP A.B1;
DUMP A.B2;



[main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1000: Error during parsing. Encountered " <PATH> "A.B1 "" at line 4, column 6.
Was expecting:
    <IDENTIFIER> ...
提前谢谢, 林

2 个答案:

答案 0 :(得分:2)

Pig不支持转储A.B1和转储A.B2。这里的B1,B2是实物中的包。在。关系中就像是两列。我们不能用“DUMP”运算符转储关系列。

如果要对关系的列执行任何操作,可以使用FOREACHGENERATE关系运算符。

X = FOREACH A GENERATE B1.$0;

  

({(3),(4),(1),(2),(7),(5)})

Y = FOREACH A GENERATE B2.$0;

  

({(1),(3),(5),(12)})

答案 1 :(得分:1)

您的问题是DUMP A.B1无效Pig语法。如果你只想把第一个包放出B1,那么你需要创建一个只生成那个包的新关系(对于第二个包也是如此)。

F1 = FOREACH A GENERATE B1;
F2 = FOREACH A GENERATE B2;

DUMP F1;
{(3),(4),(1),(2),(7),(5),(6)}

DUMP F2;
{(1),(3),(5),(12)}