Я пытаюсь обработать дамп википедии, найденный здесь. Конкретно с файлом enwiki-latest-pages-articles-multistream.xml.bz2. Это около 46 ГБ без сжатия. В настоящее время я использую анализатор STAX на Java (xerces) и могу извлекать 15 000 элементов страницы в секунду. Однако узким местом, похоже, является синтаксический анализатор, и я играл с aalto-xml, но это не помогло.
Поскольку я анализирую каждый элемент страницы в носике Storm, это узкое место. Однако я подумал, что могу просто выделить текст между тегами ... и несколько болтов обрабатывают каждый из этих элементов страницы параллельно. Это уменьшит объем работы, которую должен выполнять Грозовой носик. Однако я не уверен в конкретном подходе, который следует использовать здесь. Если я использую синтаксический анализатор для извлечения содержимого между тегами, это будет означать, что он будет анализировать каждый отдельный элемент от начала тега до конца. Есть ли способ устранить эти накладные расходы в стандартном синтаксическом анализаторе SAX/STAX?
Xerces
НЕ является парсером Stax; может быть, вы имеете в виду SAX? Что касается использования Аалто; поскольку он по крайней мере в 2 раза быстрее, чем Xerces, если вы не наблюдаете изменений, вы можете либо использовать его неправильно (например, не использовать повторноXMLInputFactory
- создание их очень дорого), либо, возможно, узкое место не в синтаксическом анализе и/или генерации XML ? - person StaxMan   schedule 01.04.2016