这是我的流分析拓扑
EventHubSource => Job A (HoppingWindow every second) => EventHubA
EventHubSource => Job B (HoppingWindow every second) => EventHubB
在测试JobA和JobC时,windowEnd和原始事件时间之间的差异只有几毫秒(~300),这是好的(来自我的制作人的延迟+ eventhub +流分析处理时间)。
但是当我在这样的新Job C中加入两个流时:
EventHubA
\
=> Job C (Join Datediff = 0 and timestamp by windowEnd)
/
EventHubB
这会产生一些输出,但问题出现在这里:
真实事件相隔数分钟,即使它们被作业A和B同时推动(同一窗口结束)
当我检查来自EventHub A和B的数据时,windowEnd和实际事件时间戳之间的差异在39到44分钟之间,对于所有这些。但是,当像上面提到的那样测试时,它只有300毫秒。
这里最糟糕的部分是,当我在prod中运行它时,它只会发出大约十几个事件并停止,即使输入计数仍然是数千个。
我已经工作了几周,每次我处理ASA的一些神秘行为时,我的拓扑非常简单,我只使用简单的跳跃窗口1s跳,这不应该花费数周的调整和试验错误,甚至不知道发生了什么。
对于使用ASA和AWS Kinesis分析的人,您是否发现Kinesis分析更易于使用?在ASA中让我烦恼的是不可预测的行为和没有错误消息的问题(我激活了日志分析并且没有错误......)
答案 0 :(得分:1)
很抱歉听到您遇到ASA的一些问题。我看到你有一个1秒的跳跃窗口,但窗户的总大小是多少,你的大概吞吐量是多少?
关于延迟:看起来是您的问题,我认为您的ASA作业可能没有足够的CPU资源,然后事件处理被延迟。不幸的是,这在当前的SU%指标中是不可见的,但我们计划在未来显示CPU和内存的指标。 要确认这是根本原因,您可以在job diagram中检查积压事件的数量。如果积压了大量事件,您可能需要增加此工作的SU数量。
您还提到了十几个输出后的作业停止,您是否在日志中看到错误消息?