2015-11-25 27 views
2

我在s3(50GB)上有一个很大的xml文件。我想将此文件流式传输到sax xml解析器,以便使用ruby进一步处理。我如何在一个环境中做到这一点,我可以在本地下载整个文件,但只能通过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

最简单的方法是使用mcmc工具是cat命令,可以用更简单的方法。

例如,如下所示。这里cat流式传输你的对象,并将输出cat输出到从stdinput读取的XML解析器。

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

这样可以避免在本地下载文件。

此外mc提供了更多工具来使用Amazon S3兼容云存储和文件系统。它具有可恢复上传,进度条,并行副本等功能。 mc是用Golang编写的,并在Apache许可证v2下发布。在OS X,Linux和Windows上支持mc