Google cloud dataflow 固定窗口在无界输入(PubSub)停止触发后,工人自动缩放

Google cloud dataflow 固定窗口在无界输入(PubSub)停止触发后,工人自动缩放,google-cloud-dataflow,apache-beam,spotify-scio,Google Cloud Dataflow,Apache Beam,Spotify Scio,使用scio版本0.4.7,我有一个监听pubsub主题的流媒体作业,我在这里使用事件处理,RFC3339中的消息属性上有“timestamp”属性 val-rtEvents:scolection[RTEvent]=sc.pubsubsubtopic(args(“topic”),timestampAttribute=“timestamp”).map(jsonToObject) val windowedEvents=rtEvents.带固定窗口(持续时间.标准分钟(1L)), 选项=窗口选项(触发

使用scio版本0.4.7,我有一个监听pubsub主题的流媒体作业,我在这里使用事件处理,RFC3339中的消息属性上有“timestamp”属性

val-rtEvents:scolection[RTEvent]=sc.pubsubsubtopic(args(“topic”),timestampAttribute=“timestamp”).map(jsonToObject)
val windowedEvents=rtEvents.带固定窗口(持续时间.标准分钟(1L)),
选项=窗口选项(触发器=重复.forever(AfterWatermark.pastEndOfWindow()),
累加模式=丢弃已触发的窗格,
允许延迟=持续时间。标准秒(1L)
)
)
我使用windowedEvents在管道中进行进一步的聚合和计算

doSomeAggregation(windowedEvents)
def doSomeAggregation(事件:scocollection[RTEvent]):scocollection[(String,Map[String,Int])]=
events.map(e=>(e.properties.key,(e.properties.category,e.id)))
.groupByKey
.map{case(key,tuple:Iterable[(String,String)])=>
val countPerCategory:Map[String,Int]=tuple.groupBy(u._1)
.mapValues(u.toList.distinct.size)
//这里还有其他一些http post和日志记录
(键,countPerCategory)
}
sc.close().waitUntilFinish()
如果我在google数据流上使用以下自动缩放参数运行作业

--workerMachineType=n1-standard-8 --autoscalingAlgorithm=THROUGHPUT_BASED
--maxNumWorkers=4
如果只有一个工作进程在运行,作业将运行,固定窗口将正确启动。一旦作业自动缩放到超过1个工人,固定窗口将停止启动,初始pubsub步骤的系统延迟和墙时间将持续增长,而数据水印不会向前移动

我的触发器设置有问题吗?有没有其他人在dataflow runner或其他runner上经历过这种情况?
非常感谢您的帮助。如果我不能解决这个问题,我倾向于放弃scio,回到apache beam java sdk

我设法解决了这个问题。在我目前的设置中,工人们无法相互沟通。作业在没有任何超时错误的情况下悄无声息地失败(beam可能会将某些内容传播为错误)

如果您使用dataflow作为运行程序,请确保为项目上的dataflow定义的防火墙是为“默认”网络定义的

如果为您的网络定义了数据流防火墙,则需要将其他运行时参数传递到作业中

--workerMachineType=n1-standard-8——自动校准算法=基于吞吐量的 --maxNumWorkers=4--network='your-network'


我设法解决了这个问题。在我目前的设置中,工人们无法相互沟通。作业在没有任何超时错误的情况下悄无声息地失败(beam可能会将某些内容传播为错误)

如果您使用dataflow作为运行程序,请确保为项目上的dataflow定义的防火墙是为“默认”网络定义的

如果为您的网络定义了数据流防火墙,则需要将其他运行时参数传递到作业中

--workerMachineType=n1-standard-8——自动校准算法=基于吞吐量的 --maxNumWorkers=4--network='your-network'


我看这个申请没有什么问题。这主要不是Scio的问题。你有工作证我们可以看一下吗?顺便问一下,管道是否与多个工人一起工作?(您可以使用--numWorkers=2选项从两个worker开始)。嘿,Raghu,谢谢您的回复。这是我从一个工人开始的工作id,问题发生在工作升级到4个工人之后:2018-02-11_20_56_03-156886864154833556。我确实是从两名工人开始这项工作的,而且根本没有开窗——工作编号:2018-02-11_20_43_27-4213713692706340214。我猜你在谷歌工作,如果你想要一张正式的票来调试这个,让我知道。提交一张正式的票会很好。请直接提到这篇文章。同时,我将请求查看作业状态的权限。此作业仅运行了10分钟。如果您使用的是自定义时间戳,那么数据流可能需要一些时间来扫描pubsub中消息的时间戳并将其提前。你一开始有很多消息要处理吗?如果你说的是4213713692706340214作业,是的,它只运行了10多分钟,我就把它杀死了,因为我预计窗户会在第一分钟自动打开。关于pub子主题,我有一个连续的生产数据流,所以是的,我在开始时有很多消息要处理。如果你愿意的话,我可以给你另一个工作id,我从一个工人开始,一切都很好。我看不出这个应用程序有什么问题。这主要不是Scio的问题。你有工作证我们可以看一下吗?顺便问一下,管道是否与多个工人一起工作?(您可以使用--numWorkers=2选项从两个worker开始)。嘿,Raghu,谢谢您的回复。这是我从一个工人开始的工作id,问题发生在工作升级到4个工人之后:2018-02-11_20_56_03-156886864154833556。我确实是从两名工人开始这项工作的,而且根本没有开窗——工作编号:2018-02-11_20_43_27-4213713692706340214。我猜你在谷歌工作,如果你想要一张正式的票来调试这个,让我知道。提交一张正式的票会很好。请直接提到这篇文章。同时,我将请求查看作业状态的权限。此作业仅运行了10分钟。如果您使用的是自定义时间戳,那么数据流可能需要一些时间来扫描pubsub中消息的时间戳并将其提前。你一开始有很多消息要处理吗?如果你说的是4213713692706340214作业,是的,它只运行了10多分钟,我就把它杀死了,因为我预计窗户会在第一分钟自动打开。关于pub子主题,我有一个连续的生产数据流,所以是的,我在开始时有很多消息要处理。如果你愿意,我可以给你另一个工作id,我可以从一个工人开始