gpt4 book ai didi

hadoop - XPath - 标量在输出中有多行

转载 作者:可可西里 更新时间:2023-11-01 16:30:28 24 4
gpt4 key购买 nike

我正在尝试使用来自 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:标量在输出中有多于一行。 (常见原因:“JOIN”然后“FOREACH ... GENERATE foo.bar”应该是“foo::bar”)

错误意义不大。如何解决?


编辑

好的,我发现B不止一行。这很难,因为 illustratedump 只显示 1 行,但后来我用了

B_GROUP = GROUP B BY myTag;
B_COUNT = FOREACH B1_GROUP GENERATE COUNT(B);
illustrate B_COUNT

它现在为 B 显示了 2 行。我怎样才能删除额外的一行?

最佳答案

当你想在foreach的GENERATE部分使用B.mytag时(假设FOREACH不在B上),首先要保证B只有一行。否则不清楚您要引用哪个 B.mytag。

关于hadoop - XPath - 标量在输出中有多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35747399/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com