根据输入数生成不同数量的列

时间:2013-09-30 15:45:01

标签: hadoop apache-pig

假设我有一些具有未知数量的子节点的XML数据。是否有一种方法允许我将子节点的数量作为参数输入到程序中,并让它处理它们?当前代码是这样的

    SourceXML = LOAD '$input' using org.apache.pig.piggybank.storage.XMLLoader('$TopNode') as test:chararray;

test2 = LIMIT SourceXML 3;

test3 = FOREACH test2 GENERATE REGEX_EXTRACT(test,'<$tag1>(.*)</$tag1>',1),
    REGEX_EXTRACT(test,'<$tag2>(.*)</$tag2>',1);

dump test3;

但是我可能事先不知道目标数据中有多少简单元素(有多少$ tag#)。我希望使用包含如下所示参数的.txt文件:

  

输入= / inputpath / lowerlevelsofpath

     

numberSimpleElements = 3

     

TAG1 = tag1name

     

TAG2 = tag2name

     

TAG3 = tag3name

对输入文件中的每个标记执行regex_extract

关于如何实现这一目标的任何想法?

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作

  1. 通过一些正则表达式拆分文本,以便每行现在都有值。
  2. 为每行生成(标记,值)
  3. 在(标记,值)和(标记列表)之间进行连接