xpath-scalar在输出中有多行

bvhaajcl  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(418)

我正在尝试使用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的两行。如何删除附加的一个?

snvhrwxg

snvhrwxg1#

如果要在foreach的generate部分使用b.mytag(假设foreach不在b上),必须首先确保b只有一行。否则不清楚您要引用哪个b.mytag。

相关问题