Sax 从 S3 解析一个大文件

Sax parsing a large file from S3

我在 s3 (50gb) 上有一个非常大的 xml 文件。我想将此文件流式传输到 sax xml 解析器,以便使用 ruby 进行进一步处理。在我无法在本地下载整个文件但只能通过 s3 通过 tcp 流式传输它的环境中,我将如何做到这一点?

我正在考虑使用 https://github.com/ohler55/ox for the parsing it self, and https://github.com/aws/aws-sdk-ruby 访问 S3 上的文件。我只是不确定如何使用流式传输方法连接这些片段?

最简单的方法是使用 mcmc 实现的是cat 命令,使用起来更简单。

例如下图。这里 cat 流式传输您的对象并将 cat 的输出通过管道传输到您的 XML 解析器,该解析器从 stdinput 读取。

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

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

另外 mc 提供了更多工具来处理与 Amazon S3 兼容的云存储和文件系统。它具有断点续传、进度条、并行复制等功能。 mc 是用 Golang 编写的,并在 Apache 许可证 v2 下发布。 mc 在 OS X、Linux 和 Windows 上受支持。