2014-11-05 2 views
0

У меня есть XML-файл, такой как следующий. Я загружаю XML, используя XMLLOader. Он работает нормально. Но, при выборке значения она дает пустые значения:Получение пустых значений при анализе XML с помощью Pig

<mfh> 
    <f></f> 
    <sn>***</sn> 
    <st>****</st> 
    <vnr>****</vnr> 
    <cb>***</cb> 
</mfh> 
<md> 
    <nei> 
     <ne>***</ne> 
     <k>***</k> 
     <n>***</n> 
    </nei> 
    <mi> 
     <mts>**</mts> 
     <g>**</g> 
     <mv> 
      <m>***</m> 
     </mv> 
    </mi> 
    ..... 
    ..... 
</md> 

Мой Pig сценарий выглядит следующим образом:

REGISTER '/usr/lib/pig/piggybank.jar' 
a = load '/user/root/sample.xml' using org.apache.pig.piggybank.storage.XMLLoader('mfh') as (doc:chararray); 
dump input_xml; 
b = foreach input_xml generate FLATTEN(REGEX_EXTRACT_ALL(doc,'<mfh>\\s*<ffv>(.*)</ffv>\\s*</mfh')); 
dump required_tags; 

Выход сценария выглядит следующим образом:

Не givning любые ошибки, но выход -(). Я обновил XML-файл, и я хочу проанализировать все значения.

ответ

0

Вы можете попробовать это?

Чтобы напечатать значение атрибута «СФО» согласно вашему примеру:

required_tags = foreach input_xml generate FLATTEN(REGEX_EXTRACT_ALL(doc,'<mfh>\\s+<ffv>(.*)</ffv>.*')); 

Чтобы напечатать все значения СФО, зп, ул, уп, ТОС:

required_tags = foreach input_xml generate FLATTEN(REGEX_EXTRACT_ALL(doc,'<mfh>\\s+<ffv>(.*)</ffv>\\s+<sn>(.*)</sn>\\s+<st>(.*)</st>\\s+<vn>(.*)</vn>\\s+<cbt>(.*)</cbt>\\s+</mfh>')); 
+0

второй работает для печати всех значений, но первый не работает, чтобы получить одно значение – user2572165

+0

Для меня это работает отлично. вы можете вставить свалку input_xml? –

+0

вышеупомянутый xml не является полным xml-файлом, он имеет так много других тегов. Когда я копирую это в отдельный xml, тогда я могу получить значения, используя ваше второе решение. Но пока я пытаюсь извлечь из полного xml это не работает. – user2572165

0

вы можете делают это

required_tags = Еогеасп input_xml генерировать Flatten (REGEX_EXTRACT_ALL (DOC, '\ с * (. ) \ S (. ) \ S (. ) \ s (. ) \ s (. *) ')) AS (ffv, sn, st, vn, cbt); dump required_tags;

Смежные вопросы