Hadoop Pig-解析XML文件

Hadoop Pig-解析XML文件,hadoop,user-defined-functions,bigdata,apache-pig,Hadoop,User Defined Functions,Bigdata,Apache Pig,我想在pig中解析如下XML文件: <person> <name>person1</name> <exp>blablabla</exp> <exp>blablabla</exp> </person> <person> <name>person2</name> <exp>blablabla</exp>

我想在pig中解析如下XML文件:

<person>
    <name>person1</name>
    <exp>blablabla</exp>
    <exp>blablabla</exp>
</person>

<person>
    <name>person2</name>
    <exp>blablabla</exp>
    <exp>blablabla</exp>
    <exp>blablabla</exp>
</person>

人1
喋喋不休
喋喋不休
人2
喋喋不休
喋喋不休
喋喋不休
我已经编写了一个JAVA程序,它生成以下输出:

  • 具有人名与其id之间映射的第一个文件:
1、人1

2、个人2

然后我可以使用此pig命令将文件加载到变量中:

A=加载“…”为(id_person:int,name:chararray)

  • 第二个文件用于映射人员及其经验
1,1,等等

1,2,等等

2,1,等等

2,2,等等

2,3,等等

我这样加载文件:

B=加载“…”为(id_person:int,id_exp:int,text:chararray)

我想做同样的事情,但只用猪。可能吗


谢谢

您可以使用Piggybank的org.apache.pig.Piggybank.storage.xmloader加载xml数据。我不确定我是否理解你想要实现的目标。如果输出中的数字与行李中的位置相关(第二个文件中的ID和第二个字段),则可以使用datafu的行李函数Enumerate(datafu.pig.bags.Enumerate)枚举包中的元素,然后生成并存储它们。

您可以使用Piggybank的org.apache.pig.Piggybank.storage.xmloader加载xml数据。我不确定我是否理解你想要实现的目标。如果输出中的数字与包中的位置相关(ID和第二个文件中的第二个字段),则可以使用datafu的包函数Enumerate(datafu.pig.bags.Enumerate)枚举包中的元素,然后生成并存储它们。

在任何地方都找不到piggybank.jar。你能提供一个maven存储库的URL吗?我在哪里都找不到piggybank.jar,刚发现“Piggy Bank是Pig用户共享功能的地方”。你能给我提供一个maven存储库的URL吗?我刚刚发现“Piggy Bank是Pig用户共享功能的地方”