使用 Pig 解析 XML 文件

Posted

技术标签:

【中文标题】使用 Pig 解析 XML 文件【英文标题】:Parsing XML file using Pig 【发布时间】:2014-05-27 06:47:20 【问题描述】:

我正在尝试通过使用以下 pig 脚本来使用 pig 读取多级 xml

REGISTER /opt/cloudera/parcels/CDH-5.0.0-1.cdh5.0.0.p0.47/lib/pig/piggybank.jar;
data = LOAD './a01.xml'
USING org.apache.pig.piggybank.storage.XMLLoader(
'p'
 ) AS
(s:chararray);
fdata=foreach data GENERATE FLATTEN(REGEX_EXTRACT_ALL(s,'<p>\\n\\<s>\\n\\s*       <w>(.*)</w>\\n\\<\s>\\n\\<\p>')) as (w:chararray);
dump fdata;

但我无法使用脚本读取 xml 文件 这是我输入的 xml 文件的结构

    -<TEI xmlns="http://www.tei-c.org/ns/1.0">



    -<text decls="A" xml:id="A01">


    -<body>


    -<p>


    -<s n="1">

    <w type="AT">The</w>

    <w type="NP" subtype="TL">Fulton</w>

    <w type="NN" subtype="TL">County</w>

    <w type="JJ" subtype="TL">Grand</w>

    <w type="NN" subtype="TL">Jury</w>

    <w type="VBD">said</w>

    <w type="NR">Friday</w>

    <w type="AT">an</w>

    <w type="NN">investigation</w>

    <w type="IN">of</w>

    <w type="NPg">Atlanta's</w>

    <w type="JJ">recent</w>

    <w type="NN">primary</w>

    <w type="NN">election</w>

    <w type="VBD">produced</w>

    <c type="pct">``</c>

    <w type="AT">no</w>

    <w type="NN">evidence</w>

    <c type="pct">''</c>

    </s>

    </p>

请告诉我猪的表达有什么问题

更新 - 我只想读取 w 类型的标签值

【问题讨论】:

【参考方案1】:

尝试使用 Streaming XML Loader ..这将使您免于编写 UDF.link http://blog.mortardata.com/post/61678005593/xml-pig-loader

【讨论】:

以上是关于使用 Pig 解析 XML 文件的主要内容,如果未能解决你的问题,请参考以下文章

Pig - 解析 XML 文件

如何使用 pig 脚本解析 xml 元素节点?

解析 PIG-XML 时出错

使用 Piggybank 使用 Pig 进行 XML 解析

使用 Pig 在 XPath 中进行嵌套解析

解析 XML 并存储在 Hive 表中