无需在 Google Cloud 中下载即可读取非常大的 blob(流式传输?)

2023-11-24

请帮忙!

[+] 我有什么:每个桶里都有很多斑点。 Blob 的大小各不相同,从小于千字节到大量千兆字节。

[+] 我正在尝试做的事情:我需要能够流式传输这些 blob 中的数据(例如大小为 1024 的缓冲区或类似的内容),或者在 Python 中按特定大小的块读取它们。关键是我不认为我可以只执行bucket.get_blob(),因为如果blob是TeraByte那么我将无法将它保存在物理内存中。

[+] 我真正想做的事情:解析 blob 内的信息以识别关键字

[+] 我读过的内容:很多关于如何分块写入谷歌云然后使用 compose 将其拼接在一起的文档(一点帮助都没有)

很多关于java的预取函数的文档(需要是python)

谷歌云API

如果有人能指出我正确的方向,我将非常感激! 谢谢


因此,我发现这样做的一种方法是在 python 中创建一个类似文件的对象,然后使用 Google-Cloud API 调用 .download_to_file() 来处理该类似文件的对象。

这本质上是流数据。 python代码看起来像这样

def getStream(blob):
    stream = open('myStream','wb', os.O_NONBLOCK)
    streaming = blob.download_to_file(stream)

os.O_NONBLOCK 标志使我可以在写入文件时进行读取。 我还没有用真正的大文件测试过这个,所以如果有人知道更好的实现或者看到这个潜在的失败,请发表评论。 谢谢!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无需在 Google Cloud 中下载即可读取非常大的 blob(流式传输?) 的相关文章

随机推荐