我想使用Hadoop从XML输入中提取特定信息

我想使用Hadoop从XML输入中提取特定信息,hadoop,apache-pig,Hadoop,Apache Pig,预期输出为:(Hadoop权威指南,Tom white,24.90) 我尝试过使用Regex\u Extract()函数。但是,还没有运气。有人能帮我吗 我的脚本的输入是: <CATALOG> <BOOK> <TITLE>Hadoop DEFINITIVE GUIDE</TITLE> <AUTHOR>TOM WHITE</AUTHOR> <COUNTRY>US</COUNTRY> <COMPAN

预期输出为:
(Hadoop权威指南,Tom white,24.90)

我尝试过使用
Regex\u Extract()
函数。但是,还没有运气。有人能帮我吗

我的脚本的输入是:

<CATALOG>
<BOOK>
<TITLE>Hadoop DEFINITIVE GUIDE</TITLE>
<AUTHOR>TOM WHITE</AUTHOR>
<COUNTRY>US</COUNTRY>
<COMPANY>CLOUDERA</COMPANY>
<PRICE>24.90</PRICE>
<YEAR>2012</YEAR>
</BOOK>
<BOOK>
<TITLE>Programming Pig</TITLE>
<AUTHOR>Alan Gates</AUTHOR>
<COUNTRY>USA</COUNTRY>
<COMPANY>Horton Works</COMPANY>
<PRICE>30.90</PRICE>
<YEAR>2013</YEAR>
</BOOK>
</CATALOG>

Hadoop权威指南
汤姆怀特
美国
克劳德拉
24.90
2012
编程清管器
艾伦·盖茨
美国
霍顿工厂
30.90
2013

您必须分别提取
,然后使用
join
操作符将它们连接在一起

以下脚本实现了:

-- Load input 
A = LOAD '/input.txt' USING PigStorage() AS (f1:chararray);

-- Extract <TITLE>
B1 = FOREACH A GENERATE REGEX_EXTRACT(f1, '<TITLE>(.*)</TITLE>', 1) AS (title:chararray);
C1 = FILTER B1 BY title is not null;
D1 = RANK C1;

-- Extract <AUTHOR>
B2 = FOREACH A GENERATE REGEX_EXTRACT(f1, '<AUTHOR>(.*)</AUTHOR>', 1) AS (author:chararray);
C2 = FILTER B2 BY author is not null;
D2 = RANK C2;

-- Extract <PRICE>
B3 = FOREACH A GENERATE REGEX_EXTRACT(f1, '<PRICE>(.*)</PRICE>', 1) AS (price:chararray);
C3 = FILTER B3 BY price is not null;
D3 = RANK C3;

-- Join 3 data sets
D = JOIN D1 BY $0, D2 BY $0, D3 By $0;

-- Eliminate the ranks
E = FOREACH D GENERATE $1 AS (title:chrarray), $3 AS (author:chararray), $5 AS (price:chararray)

dump E;

你的猪版是什么?我想等级是从猪0.9开始的。这个脚本,我写得很好。好的,我可以提取单个数据,但是我不能加入3个数据集。出现解析错误。Error org.apache.pig.tools.grunt.grunt-errore 10000:解析过程中出错。在第1行遇到“”。也无法执行Rank cmd..仍然稍微修改上述命令我能够提取dem…无法加入dem..我做错了什么..plz help…B=foreach a生成展平(REGEX_extract(x,,(*),1))AS(title:chararray);我提取了个人数据。你使用的是哪个版本的Pig?我的Pig版本是0.14。这个剧本对我来说非常适合。我甚至发布了通过在我的设置中运行脚本得到的答案。你能检查一下清管器的版本吗?您的Pig版本可能不支持
Rank
<代码>秩函数从Pig 0.11开始就受支持。我得到一个秩命令的标识符错误。遇到C1,预期为“as”、“;”…我们有任何秩的替代命令…因为最后一个命令有错误。我问你,你的Pig版本是什么?你能告诉我吗?
(Hadoop DEFINITIVE GUIDE,TOM WHITE,24.90)
(Programming Pig,Alan Gates,30.90)