Java Google数据流:从Google云存储读取未绑定的PCollection
我有一个管道可以将JSON消息从PubSub(Unbound PCollection)流到Google云存储。每个文件应该包含多个JSON对象,每行一个 我想创建另一条管道,它应该从这个GCS bucket读取所有JSON对象,以便进一步流处理。最重要的是,第二条管道应该作为流而不是批处理工作。意味着我希望它“监听”bucket并处理写入其中的每个JSON对象。未绑定的p集合 有什么方法可以实现这种行为吗Java Google数据流:从Google云存储读取未绑定的PCollection,java,google-cloud-storage,google-cloud-dataflow,stream-processing,Java,Google Cloud Storage,Google Cloud Dataflow,Stream Processing,我有一个管道可以将JSON消息从PubSub(Unbound PCollection)流到Google云存储。每个文件应该包含多个JSON对象,每行一个 我想创建另一条管道,它应该从这个GCS bucket读取所有JSON对象,以便进一步流处理。最重要的是,第二条管道应该作为流而不是批处理工作。意味着我希望它“监听”bucket并处理写入其中的每个JSON对象。未绑定的p集合 有什么方法可以实现这种行为吗 谢谢流式处理仅适用于PubSub数据源。但别担心,你可以实现你的管道 创造 创建侦听Pu
谢谢流式处理仅适用于PubSub数据源。但别担心,你可以实现你的管道
- 创造
- 创建侦听PubSub消息的管道。
- 当消息到达时,读取它并获取文件URI
- 使用存储API读取文件并注入管道中的每一行
- 继续你的管道与每一个解码行
- 创造
- 创建侦听PubSub消息的管道。
- 当消息到达时,读取它并获取文件URI
- 使用存储API读取文件并注入管道中的每一行
- 继续你的管道与每一个解码行
- 在管道的开头接受发布/订阅消息
- 通过将消息窗口化为一个大消息窗口来处理该消息
- 将每个消息窗口作为文件写入GCS存储桶
- 除了上面描述的窗口化之外,还要以另一种方式处理每一行
PCollection
对象的引用。然后,您将对这一引用应用多个DoFn
实现链等。您将能够像现在一样通过写入GCS来进行窗口设置,并以您喜欢的任何方式处理每条消息
可能是这样的:
Pipeline-Pipeline=Pipeline.create(选项);
PCollection messages=pipeline.apply(“从发布/订阅中读取”,PubsubIO.readStrings().fromTopic(“我的主题名称”);
//用于窗口化到GCS的当前管道分叉
messages.apply(“GCS的句柄”,…);
//新叉子更容易处理
messages.apply(“更多内容”,…);
另一位用户提供了一个很好的答案,告诉您如何做您想做的事情,但是,如果我正确理解您的问题,我想我可以推荐一种更干净的方法
假设以下为真,您希望:
- 在管道的开头接受发布/订阅消息
- 通过将消息窗口化为一个大消息窗口来处理该消息
- 将每个消息窗口作为文件写入GCS存储桶
- 除了上面描述的窗口化之外,还要以另一种方式处理每一行
PCollection
对象的引用。然后,您将对这一引用应用多个DoFn
实现链等。您将能够像现在一样通过写入GCS来进行窗口设置,并以您喜欢的任何方式处理每条消息
可能是这样的:
Pipeline-Pipeline=Pipeline.create(选项);
PCollection messages=pipeline.apply(“从发布/订阅中读取”,PubsubIO.readStrings().fromTopic(“我的主题名称”);
//用于窗口化到GCS的当前管道分叉
messages.apply(“GCS的句柄”,…);
//新叉子更容易处理
messages.apply(“更多内容”,…);
我很想知道您在这种方法中体验到了什么样的性能。我采用了类似的方法和beam.io.ReadAllFromText()step似乎是一个真正的瓶颈。实现令人满意的吞吐量所需的工作人员数量是不可行的。我很想知道您在使用这种方法时体验到了什么样的性能。我采用了一种类似的方法,beam.io.ReadAllFromText()step似乎是一个真正的瓶颈。达到令人满意的吞吐量所需的工人数量是不可行的。