[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
'HADOOP' 카테고리의 다른 글
[HADOOP] Hadoop2.2와 두싯 오류 (0) | 2019.09.23 |
---|---|
[HADOOP] PHP를 통해 돼지의 스트림 (0) | 2019.09.23 |
[HADOOP] 의사 분산 모드 하둡 (0) | 2019.09.23 |
[HADOOP] HBase를 클라이언트 API는 HBase를 연결하지 (0) | 2019.09.23 |
[HADOOP] 하둡 새로운 API에 대한 클래스 캐스트 예외 (0) | 2019.09.23 |