流分析事件中心输出

时间:2016-09-02 11:06:00

标签: json azure real-time azure-eventhub azure-stream-analytics

以下Stream Analytics Query按10秒Sliding Window间隔计算按IP地址分组的事件数:

Select
    Min(Time) as FirstHit,
    Max(Time) as LastHit, 
    Count(*) as Total, 
    IPAddress
From
    Input Partition By PartitionId TimeStamp By Time
Group By 
    SlidingWindow(second, 10), IPAddress, PartitionId
Having
    Total >= 10

生成的聚合输出到Event Hub

10个简单对象的以下JSON有效负载,在10秒窗口内间隔精确1秒,发布到Stream Analytics,由上述Query处理:

[{
    "IPAddress": "192.168.0.10",
    "Time": "2016-09-02T11:40:01"
}, {
    "IPAddress": "192.168.0.10",
    "Time": "2016-09-02T11:40:02"
}, {
    "IPAddress": "192.168.0.10",
    "Time": "2016-09-02T11:40:03"
}, {
    "IPAddress": "192.168.0.10",
    "Time": "2016-09-02T11:40:04"
}, {
    "IPAddress": "192.168.0.10",
    "Time": "2016-09-02T11:40:05"
}, {
    "IPAddress": "192.168.0.10",
    "Time": "2016-09-02T11:40:06"
}, {
    "IPAddress": "192.168.0.10",
    "Time": "2016-09-02T11:40:07"
}, {
    "IPAddress": "192.168.0.10",
    "Time": "2016-09-02T11:40:08"
}, {
    "IPAddress": "192.168.0.10",
    "Time": "2016-09-02T11:40:09"
}, {
    "IPAddress": "192.168.0.10",
    "Time": "2016-09-02T11:40:10"
}]

Stream Analytics作业和Event Hub实例都是新实例化的。

尽管事件有效负载符合Stream Analytics条件,但

Query不会输出相应的事件。

但是,在发出第二个请求时,将相同的有效负载发布到Stream Analytics,将使用正确的元数据创建输出事件。

我的配置或Stream Analytics的某种boot-strapper / warm-up / offset功能是否存在差异导致第一个有效负载被有效忽略?

1 个答案:

答案 0 :(得分:1)

我的猜测是你按照以下顺序与它互动:

  1. 将事件发送到集线器。
  2. StreamAnalytics作业从当前时间开始。
  3. 其他事件将发送到集线器。
  4. EventHub 是一个流,它没有当前时间的概念, StreamAnalytics 需要正确的偏移才能开始处理事件。

    如果您向我们提供更多详细信息,我们可以对此进行确认或进一步调查此问题。

    从我的评论中,您可以从门户网站的StreamAnalytics的输入刀片中,对输入中的数据进行采样并将其提供给您的查询,以确保您所期望的结果存在(时间窗口将被忽略,但你可以先输入你想要的时间窗口。

    此外,在指定TIMESTAMP BY子句时,请确保您的输入配置了对无序事件的容差,以防您的订单无法保证(https://msdn.microsoft.com/en-us/library/azure/mt674682.aspx)。

    有关输入的延迟到达/无序设置的更多详细信息:https://blogs.msdn.microsoft.com/streamanalytics/2015/05/17/out-of-order-events/

相关问题