복붙노트

[HADOOP] 돼지 - XPATH를 사용하여 XML 데이터를 검색

HADOOP

돼지 - XPATH를 사용하여 XML 데이터를 검색

나는 XML 파일의이 유형의 n 개의 있습니다.

<students roll_no=1>
    <name>abc</name>
    <gender>m</gender>
    <maxmarks>
        <marks>
            <year>2014</year>
            <maths>100</maths>
            <english>100</english>
            <spanish>100</spanish>
        <marks>
        <marks>
            <year>2015</year>
            <maths>110</maths>
            <english>110</english>
            <spanish>110</spanish>
        <marks>
    </maxmarks>
    <marksobt>
        <marks>
            <year>2014</year>
            <maths>90</maths>
            <english>95</english>
            <spanish>82</spanish>
        <marks>
        <marks>
            <year>2015</year>
            <maths>94</maths>
            <english>98</english>
            <spanish>02</spanish>
        <marks>
    </marksobt>
</Students>

내가 좋아하는 출력을 필요로

roll_no name    gender  year    eng_max_marks   maths_max_marks spanish_max_marks
1       abc     m       2014    100                 100          100
1       abc     m       2015    110                 110          110

나는 마크가 하나의 문에서 현명하지만,이 함께 roll_no와 이름을 추출 할 수 없습니다 행 검색 할 수 있어요.

A =  LOAD 'student.xml' using org.apache.pig.piggybank.storage.XMLLoader('marks') as (x:chararray);

B = FOREACH A GENERATE XPath(x, 'marks/year'), XPath(x, 'marks/english'), XPath(x, 'marks/math'), XPath(x, 'marks/spanish');

이 복귀

year    eng_max_marks   maths_max_marks spanish_max_marks
2014    100              100             100
2015    110              110             110

나는 다른 분야에 참여하는 방법을 점점 덩어리 있지만 둘을 추출 할 수 있습니다. 나는에서 사용 나는 다른 파일의 n 개의 번호를 가지고 있기 때문에 가입 할 수 없습니다.

하자 위조 지금은 이름 (roll_no을) 때문이다. 어떻게 노드의 나머지 부분을 추출 할 수 있습니다

name    gender  year    eng_max_marks   maths_max_marks spanish_max_marks
abc      m     2014      100             100             100
abc      m     2015      110             110             110

나는이 노드는 다를 수 있습니다 및 더러운 접근 방법을 채택하고 싶지 않기 때문에 마크 (1) / 영어 접근 방식을 사용하지 않습니다.

모든 포인터 ????

해결법

    from https://stackoverflow.com/questions/33044358/pig-retrieve-data-from-xml-using-xpath by cc-by-sa and MIT license