这是我的代码和错误,在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> ...
提前谢谢,
林
答案 0 :(得分:2)
Pig不支持转储A.B1和转储A.B2。这里的B1,B2是实物中的包。在。关系中就像是两列。我们不能用“DUMP”运算符转储关系列。
如果要对关系的列执行任何操作,可以使用FOREACH
和GENERATE
关系运算符。
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)}