2015-09-06 98 views
0

这里是我的代码和错误,在Hadoop上使用Pig,任何人都有什么好主意?谢谢。DUMP在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> ... 

在此先感谢, 林

回答

1

您的问题是DUMP A.B1无效猪语法。如果你只想放第一个包,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)} 
+0

感谢和具体什么是有效的转储参数?并想知道为什么DUMP A.B1不是有效的Pig语法? :) –

+1

你可以转储关系;这基本上是等号左边的任何东西。 – gobrewers14

+0

为什么A.B1不是一个关系?我以为它是一个包,一个包是一种关系? –

2

猪不支持转储A.B1和转储A.B2。在这里,B1,B2是真实的A.so.it,就像关系中的两列一样。我们不能用“DUMP”操作符转储关系列。

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

X = FOREACH A GENERATE B1.$0;

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

Y = FOREACH A GENERATE B2.$0;

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

+0

谢谢史蒂夫,投票。 –