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 上的文件。我只是不确定如何使用流式传输方法连接这些片段?
最简单的方法是使用 mc
。 mc
实现的是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 上受支持。
我在 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 上的文件。我只是不确定如何使用流式传输方法连接这些片段?
最简单的方法是使用 mc
。 mc
实现的是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 上受支持。