Google cloud dataflow 谷歌云数据流:使用DirectPipelineRunner访问管道中的谷歌云发布/订阅(本地作业)?
我已经使用Google Cloud Dataflow SDK编写了一个流式管道,但是我想在本地测试我的管道。我的管道从Google Pub/Sub获取输入数据 是否可以使用DirectPipelineRunner(本地执行,而不是谷歌云)运行访问发布/订阅(pubsubIO)的作业Google cloud dataflow 谷歌云数据流:使用DirectPipelineRunner访问管道中的谷歌云发布/订阅(本地作业)?,google-cloud-dataflow,google-cloud-pubsub,Google Cloud Dataflow,Google Cloud Pubsub,我已经使用Google Cloud Dataflow SDK编写了一个流式管道,但是我想在本地测试我的管道。我的管道从Google Pub/Sub获取输入数据 是否可以使用DirectPipelineRunner(本地执行,而不是谷歌云)运行访问发布/订阅(pubsubIO)的作业 我以普通用户帐户登录时遇到权限问题。我是具有我试图访问的发布/订阅主题的项目的所有者。DirectPipelineRunner当前不支持发布/订阅。在本地使用时,您将收到一个错误,指出“没有为PubsubIO.Rea
我以普通用户帐户登录时遇到权限问题。我是具有我试图访问的发布/订阅主题的项目的所有者。DirectPipelineRunner当前不支持发布/订阅。在本地使用时,您将收到一个错误,指出“没有为PubsubIO.Read注册的计算器”
您的权限问题可能来自其他来源。这实际上是可能的,但DirectPipelineRunner不支持无界数据源。因此,您必须设置
maxReadTime
或maxNumRecords
如下:
PubsubIO.Read.topic("projects/<project-id>/topics/<topic>").maxNumRecords(1000);
publisubio.Read.topic(“projects//topics/”).maxNumRecords(1000);
发件人:
连续读取云发布/子流的p传输,以及
返回包含流中项目的字符串的PCollection。
当使用仅支持边界的PipelineRunner运行时
P集合(如DirectPipelineRunner),仅为
可以处理输入的发布/子流。同样地
PubsubIO.Read.Bound.maxNumRecords(int)或
必须设置PubsubIO.Read.Bound.maxReadTime(持续时间)
是中引入的DirectPipelineRunner的新版本,包括对无界PCollection的支持
(注意:在Apache BAM中,这个功能已经被添加到DirectRunner中,但是在java的DATAFOFF SDK中,直到2,我们不能这么做,因为它更好地检查模型可能会导致额外的测试失败,我们认为这是一个向后的不兼容的变化。因此,加入了InProcessPipelineRunner的时间Bee。ng.)
还有一些很棒的新功能,用于测试延迟和无序数据。只是为了帮助任何想要搜索这些数据的人 使用最新版本,您可以执行此操作。如果要在本地运行管道,请使用“DirectRunner”在本地运行此操作。使用“DataflowRunner”在云中运行此操作 设置分段位置和流道,如下所示
streamingOption.setStagingLocation(PipelineConstants.PUBSUB_STAGING_LOCATION);
streamingOption.setRunner(DataflowRunner.class);
或者将其作为参数传递
你能详细说明一下你所面临的权限问题吗?顺便说一句,有没有强烈的理由不支持它?我想这并不难支持。请看下面更新的答案——InProcessPipelineRunner是DirectPipelineRunner的新版本,可以处理无限的PCollection。通过“尝试访问”,您到底做了什么?如果您是项目的所有者,每个操作都应该正常工作。这在最新的Dataflow SDK(2.4.0)中似乎不可用