Лучший способ скачать данные из Google Cloud Storage? - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь использовать что-то вроде конвейера потока данных apache, подробно описанного в конце этой статьи: https://cloud.google.com/blog/products/gcp/how-to-process-weather-satellite-data-in-real-time-in-bigquery. Набор данных go-16, из которого я пытаюсь загрузить: https://console.cloud.google.com/storage/browser/gcp-public-data-goes-16?authuser=3&project=fire-neural-network-285603&prefix=. Таким образом, я мог создать pub / sub topi c и передавать текстовые данные в мои pub / sub topi c, а затем использовать луч apache для загрузки из pub / sub topi c, но это похоже на обратное меня. Есть ли способ использовать apache -beam для загрузки непосредственно из облачного хранилища при каждом его обновлении без необходимости иметь дело с pubsub? Это кажется обратным, потому что для создания pub / sub мне нужно создать новое задание потока данных, которое будет выполняться почти вечно, поскольку мне всегда нужны новые данные (так что в конечном итоге это дорого стоит). Примерно так:

p = beam.Pipeline(runner, options=opts)
   (p
        | 'events' >> beam.io.ReadStringsFromGoogleCloud(bucketname) <---- looking for this
        | 'filter' >> beam.FlatMap(lambda message: g2j.only_infrared(message))
        | 'to_jpg' >> beam.Map(lambda objectid: 
            g2j.goes_to_jpeg(
                objectid, lat, lon, bucket,
                'goes/{}_{}/{}'.format( lat, lon, os.path.basename(objectid).replace('.nc','.jpg') ) 
                ))
   )

Любая помощь приветствуется, если я ошибаюсь, дайте мне знать!

1 Ответ

0 голосов
/ 06 августа 2020

Для потоковой передачи данных лучше использовать Cloud Storage -> Data Flow -> Pub / Sub. Поскольку это поток, задание будет выполняться вечно.

Если это пакетная обработка, вы можете запустить облачную функцию из облачного хранилища, а затем отправить sh это сообщение в Pub / Sub.

...