Доступ к произвольной строке в большом файле в Google Cloud Storage - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь прочитать случайную строку из большого файла, хранящегося в общедоступном облачном хранилище.

Насколько я понимаю, я не могу сделать это с помощью gsutil и заглянул в FUSE, но яЯ не уверен, что он заполнит мой вариант использования: https://cloud.google.com/storage/docs/gcs-fuse

Существует много файлов размером ~ 50 ГБ каждый - всего несколько терабайт.Если возможно, я бы хотел не загружать эти файлы.Все они представляют собой простые текстовые файлы - вы можете увидеть их здесь: https://console.cloud.google.com/storage/browser/genomics-public-data/linkage-disequilibrium/1000-genomes-phase-3/ldCutoff0.4_window1MB

Было бы замечательно, если бы я мог просто получить дескриптор файловой системы, используя FUSE, чтобы я мог поместить данные непосредственно в другие сценарии - ноЯ согласен с необходимостью переписывать их, чтобы читать построчно, если это то, что необходимо.Главное - ни при каких обстоятельствах интерфейс не должен загружать весь файл.

1 Ответ

0 голосов
/ 24 октября 2018

Заголовок диапазона позволяет загружать определенные смещения байтов из файла с использованием XML API.

Нет прямого способа получить определенную строку , поскольку GCS не знает, где в файле начинается или заканчивается любая заданная строка.Инструменты для поиска конкретной строки обычно читают весь файл, чтобы посчитать разрывы строк, чтобы найти нужную строку.

Если в файле есть номера строк, вы можете выполнить бинарный поиск для поискажелаемая строка.Вы бы запросили небольшие куски, проверили номер строки, а затем попробовали другое местоположение, основываясь на этом, пока не найдете нужную строку.

, если в файле нет номеров строк, вы можете выполнить предварительную обработкусделать это возможным.Перед начальной загрузкой файла вы можете отсканировать файл и записать байтовое расположение каждой N-й строки.Затем, чтобы получить нужную строку, вы ищите местоположение байта в этом индексе и можете сделать запрос диапазона для соответствующего раздела.

...