Чтение действительно больших BLOB-объектов без загрузки их в Google Cloud (потоковая передача?)

Пожалуйста помоги!

[+] Что у меня есть: много капель в каждом ведре. Размер BLOB-объектов может варьироваться от менее килобайта до множества гигабайт.

[+] Что я пытаюсь сделать: мне нужно иметь возможность либо передавать данные в этих BLOB-объектах (например, буфер размером 1024 или что-то в этом роде), либо читать их порциями определенного размера в Python. Дело в том, что я не думаю, что могу просто выполнить bucket.get_blob(), потому что, если бы этот BLOB-объект был TeraByte, я бы не смог иметь его в физической памяти.

[+] Что я на самом деле пытаюсь сделать: проанализировать информацию внутри блобов, чтобы определить ключевые слова

[+] То, что я прочитал: много документации о том, как писать в облаке Google в виде кусков, а затем использовать compose для сшивания его вместе (не полезно вообще)

Много документации по функциям предварительной выборки Java (должен быть Python)

Облачные API Google

Если бы кто-нибудь мог указать мне правильное направление, я был бы очень благодарен! Спасибо

1 ответ

Таким образом, я нашел способ сделать это, создав файл-подобный объект в python, а затем используя API-интерфейс Google-Cloud.download_to_file() с этим файловым объектом.

Это по сути потоковые данные. код Python выглядит примерно так

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

Флаг os.O_NONBLOCK позволяет читать во время записи в файл. Я до сих пор не проверял это с действительно большими файлами, поэтому, если кто-нибудь знает лучшую реализацию или видит потенциальную ошибку с этим, пожалуйста, прокомментируйте. Спасибо!

Другие вопросы по тегам