【问题标题】:reading 10G file into memory on cloud将10G文件读入云端内存
【发布时间】:2017-12-13 19:17:34
【问题描述】:

我正在开发 Azure。我有一个要读入内存的 10G 文件。所有这些都是制表符分隔或带有一些分隔符的 .dat 文件。我可以灵活地在旅途中创建一个计算环境来读取和处理这些文件。如何找出最佳设置,以便我可以在

【问题讨论】:

    标签: python azure memory


    【解决方案1】:

    我的建议是你可以把你的10G文件放到Azure Blob Storage

    Azure Blob storage limits document 开始,单个 blob 的吞吐量高达每秒 60 MiB 或高达每秒 500 个请求。

    然后您可以从 Azure Blob 存储下载文件并将其读入内存。

    10240M / 60M/s = 170.67s/60= 2.84 min
    

    当然,以上限制只是理想情况,实际情况还受网络环境等因素影响。

    因此,您可以通过两种方式提高性能,以便在不到 5 分钟的时间内满足您的要求。

    1.将一个blob分成几个部分,按字节顺序下载。

    您可以在Get Blob Request Headers 中使用Rangex-ms-range 仅返回指定范围内的blob 字节。

    例如将10G的blob文件拆分为100个请求,单位时间内发送100个请求。然后下载到本地文件中进行后续处理。请确保在正确的位置写入字节。但这需要系统有10G的内存空间供其使用。

    2.在下载满足配额的每个容量时,同时读入内存。

    例如,一个blob被分成100个请求,每单位时间发送5个请求。按顺序跑20次。每 5 个请求写入内存,随后 5 个请求将同时发送。这样,系统只分配了大约500M的内存空间。

    鉴于网络不稳定导致requsts中断需要在请求字节范围内重写,建议您将文件分成更多部分。

    此外,Azure 服务器可能是更好的选择,因为本地测试可能无法达到理想状态。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2016-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-25
      • 1970-01-01
      • 2010-11-14
      • 2012-06-05
      • 1970-01-01
      相关资源
      最近更新 更多