2013-09-30 2 views
0

Предположим, у меня есть некоторые 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; 

однако я не могу заранее знать, как много простых элементов есть в выходных данных (сколько $ тега # есть). Я надеюсь использовать .txt файл, содержащий параметры, который выглядит примерно так:

вход =/inputpath/lowerlevelsofpath

numberSimpleElements = 3

tag1 = tag1name

tag2 = tag2name

tag3 = tag3name

С regex_extract делается на каждом теге во входном файле

Любые идеи о том, как это сделать?

+0

в конечном итоге пытается написать сценарий питона, который динамически сгенерированный код свиньи. Хотя это улучшило гибкость, оно не дало мне то, что мне было нужно. Поэтому я просто написал код Java MapReduce. –

ответ

0

Вы можете сделать следующее

  1. разделить текст каким-то регулярное выражение, так что каждая строка теперь имеет значение.
  2. Сформировать (тэг, значение) для каждой строки
  3. ли соединения между (тегом, значением) и (списком тегов)
Смежные вопросы