2015-11-25 26 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