나는 위키 피 디아 덤프를 처리하려고 시도하고 있습니다. here입니다. 특히 - enwiki-latest-pages-articles-multistream.xml.bz2 파일을 사용하십시오. 이것은 약 46GB 비 압축입니다. 현재 Java (xerces)에서 STAX 파서를 사용하고 있으며 초당 15K 페이지 요소를 추출 할 수 있습니다. 그러나 병목 현상은 파서 인 것처럼 보이고 aalto-xml로 주변에서 놀았지만 도움이되지 않았습니다.병렬 처리 Wikipedia의 XML 데이터 덤프 폭풍으로
스톰 스파우트에서 각 페이지 요소를 구문 분석하기 때문에 병목 현상이 발생합니다. 그러나, 나는 ... 태그들 사이에서 텍스트를 간단하게 출력 할 수 있고, 여러 개의 볼트가 각 페이지 요소를 병렬로 처리 할 수 있다고 생각했습니다. 이것은 스톰 스파우트가 수행해야하는 작업량을 줄여줍니다. 그러나 나는 여기에 걸릴 특정 접근법을 잘 모르겠습니다. 파서를 사용하여 태그 사이의 내용을 추출하면 태그 시작 부분부터 끝까지 모든 요소를 구문 분석합니다. 표준 SAX/STAX 파서에서이 오버 헤드를 제거 할 수있는 방법이 있습니까?
나는 그것이 어떻게 될지 모른다. 원시 XML을 닫고 자하는 태그를 알고 싶다면 내부의 모든 XML 컨텐트를 파싱해야한다고 생각합니다. 그렇지 않으면 끝 태그는 실제로 원하는 태그와 모호 할 수 있으며, 다른 네임 스페이스는 소개 된 네임 스페이스로 인해 영향을받을 수 있습니다. 이를 달성하는 것이 일반적으로 안전하지 않은 가정을 필요로하는 것처럼 보이며 특정 상황에서만 적용될 수 있습니다. –
'Xerces'는 Stax 파서가 아닙니다; 어쩌면 당신은 SAX를 생각하고 있습니까? Aalto 사용법; Xerces보다 2 배 이상 빠르기 때문에 변경 사항을 준수하지 않으면 (XMLInputFactory를 재사용하지 않는 것과 같이 XML을 생성하는 데 비용이 많이 드는 등) 잘못 사용하거나 병목 현상이 XML 구문 분석 및/또는 세대? – StaxMan