google-cloud-platform - 从 Google Cloud Storage 下载数据的更好方法?
问题描述
我正在尝试使用本文末尾详细介绍的 apache 数据流管道:https ://cloud.google.com/blog/products/gcp/how-to-process-weather-satellite-data-in-real -time-in-bigquery。我尝试下载的 gos-16 数据集是:https ://console.cloud.google.com/storage/browser/gcp-public-data-goes-16?authuser=3&project=fire-neural-network-285603&prefix =. 所以我可以创建一个 pub/sub 主题并将文本数据流式传输到我的 pub/sub 主题,然后使用 apache Beam 从 pub/sub 主题下载,但这对我来说似乎有点倒退。有没有一种方法可以在更新时使用 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') )
))
)
任何帮助表示赞赏,如果我要解决这个完全错误的问题,请告诉我!
解决方案
对于流数据,Cloud Storage --> Data Flow --> Pub/Sub 是更好的选择。由于它是一个流,因此该作业将永远运行。
如果是批处理,那么您可以从 Cloud Storage 触发 Cloud Function,然后将该消息推送到 Pub/Sub。
推荐阅读
- csv - 如何使用 shell 中的 sed 仅在 .csv 文件的第一列中更改日期格式
- sql - 根据同一行的值更新行
- mvvmcross - WPF 应用程序中的自定义视图演示者
- assembly - 如何使用 NASM 调用位于后两个扇区的代码?
- mysql - 为什么我不能在两个表中使用触发器来将数据保存在第一个表中?最好的方法是什么?
- c++ - c++:128位比较和交换的原子性测试
- c# - WPF MVVM - OneWay 数据绑定的正确方法
- apache-kafka - Kafka 连接连续 Put 之间的延迟
- java - 带有标签和按钮的 Vaadin 8 水平布局
- python-3.x - 使用 Python 以 sudo 启动 shell 脚本时如何验证正确的密码