2015-11-25 2 views
2

У меня очень большой xml-файл на s3 (50gb). Я хотел бы передать этот файл в синтаксический анализатор sax xml для дальнейшей обработки с использованием ruby. Как я могу сделать это в среде, где я cannon загружать весь файл локально, но только передавать его по tcp из s3?Sax синтаксический анализ большого файла с S3

Я думаю об использовании https://github.com/ohler55/ox для его разбора и https://github.com/aws/aws-sdk-ruby для доступа к файлу на S3. Я просто не знаю, как соединить фрагменты с использованием потокового подхода?

+0

https://amolnpujari.wordpress.com/2012/03/31/reading_huge_xml-rb/ –

ответ

3

Самый простой способ - использовать mc. mc орудия - это команда cat, которая может использоваться более простым способом.

Например, как показано ниже. Здесь cat передает ваш объект и выводит вывод cat на ваш XML-парсер, который читает из stdinput.

$ mc cat s3.amazonaws.com/<yourbucket>/<yourobject> | <your_xml_parser> 

Таким образом, вы можете избежать загрузки файла локально.

Дополнительно mc предоставляет больше инструментов для работы с облачными хранилищами и файловыми системами, совместимыми с Amazon S3. Он имеет такие функции, как возобновляемые загрузки, индикатор выполнения, параллельная копия. mc написан в Голанге и выпущен под лицензией Apache v2. mc поддерживается на OS X, Linux и Windows.

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