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

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

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

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

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

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

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

API Google Cloud

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

1 Ответ

0 голосов
/ 17 мая 2018

Таким образом, я нашел способ сделать это, создав файл-подобный объект в 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 позволяет мне читать, пока я пишу в файл.Я до сих пор не проверял это с действительно большими файлами, поэтому, если кто-нибудь знает лучшую реализацию или видит потенциальную ошибку с этим, пожалуйста, прокомментируйте.Спасибо!

...