我正在尝试使用xml中的信息创建别名。我的代码有这样的结构。
REGISTER /usr/lib/pig/piggybank.jar
DEFINE XPath org.apache.pig.piggybank.evaluation.xml.XPath();
A = LOAD 'foo.xml' using org.apache.pig.piggybank.storage.XMLLoader('Document') as (x:chararray);
B = FOREACH A GENERATE XPath(x, 'Document/foo/bar/tag') as myTag:chararray;
C = LOAD 'foo.xml' using org.apache.pig.piggybank.storage.XMLLoader('someOtherTag') as (x:chararray);
D = FOREACH C GENERATE
B.myTag,
XPath(x, 'someOtherTag/taggy') as FOO:chararray;
dump D;
当我试图显示d或存储它时,我总是得到一个错误0:scalar在输出中有多行(共同原因:“加入”然后“加入”。。。generate foo.bar“应该是”foo::bar“)
这个错误不是很有意义。如何解决这个问题?
编辑
我发现b不止一行。这很难,因为说明和转储只显示了一行,但后来我用了
B_GROUP = GROUP B BY myTag;
B_COUNT = FOREACH B1_GROUP GENERATE COUNT(B);
illustrate B_COUNT
它现在显示了b的两行。如何删除附加的一个?
1条答案
按热度按时间snvhrwxg1#
如果要在foreach的generate部分使用b.mytag(假设foreach不在b上),必须首先确保b只有一行。否则不清楚您要引用哪个b.mytag。