我试图用pig读取xml文件中的数据,但得到的输出不完整。
输入文件-
<document>
<url>htp://www.abc.com/</url>
<category>Sports</category>
<usercount>120</usercount>
<reviews>
<review>good site</review>
<review>This is Avg site</review>
<review>Bad site</review>
</reviews>
</document>
我使用的代码是:
register 'Desktop/piggybank-0.11.0.jar';
A = load 'input3' using org.apache.pig.piggybank.storage.XMLLoader('document') as (data:chararray);
B = foreach A GENERATE FLATTEN(REGEX_EXTRACT_ALL(data,'(?s)<document>.*?<url>([^>]*?)</url>.*?<category>([^>]*?)</category>.*?<usercount>([^>]*?)</usercount>.*?<reviews>.*?<review>\\s*([^>]*?)\\s*</review>.*?</reviews>.*?</document>')) as (url:chararray,catergory:chararray,usercount:int,review:chararray);
我得到的结果是:
(htp://www.abc.com/,Sports,120,good site)
这是不完整的输出。有人能帮我什么我错过了?
1条答案
按热度按时间1l5u6lss1#
呵呵!!终于用它工作了
cross
. 我在用XPath
,如果需要,可以使用regex。我发现,xpath比regex更简单、更干净。我想,你也能看到。别忘了换新的testXML.xml
使用xml。xpath方式:
正则表达式方式:
输出:
这不是你所期待的吗?;)