【问题标题】:KSQL Event Merging - Combining events from a single stream based on timestampKSQL 事件合并 - 基于时间戳组合来自单个流的事件
【发布时间】:2020-05-14 00:49:27
【问题描述】:

我正在尝试使用 ksql 将来自单个输入流的多个事件组合成一个按时间戳分组的单个输出事件。我还希望输出事件包含输入事件的平均值,尽管这不是严格意义上的 nessersay,而且更好。

输入流:温度

event1: {location: "hallway", value: 23, property_Id: "123", timestamp: "1551645625878"} 
event2: {location: "bedroom", value: 21, property_Id: "123", timestamp: "1551645625878"}
event3: {location: "kitchen", value: 20, property_Id: "123", timestamp: "1551645625878"}
event4: {location: "hallway", value: 19, property_Id: "123", timestamp: "9991645925878"} 
event5: {location: "bedroom", value: 18, property_Id: "123", timestamp: "9991645925878"}
event6: {location: "kitchen", value: 18, property_Id: "123", timestamp: "9991645925878"}

(所需)输出流:

event1:
{
    "property_id": "123",
    "timestamp": "1551645625878",
    "average_temperature": 21,   
    "temperature": [
        {
            "location": "hallway",
            "value": 23
        },
        {
            "location": "bedroom",
            "value": 21
        },
        {
            "location": "kitchen",
            "value": 20
        }
    ]
}

event2:
{
    "property_id": "123",
    "timestamp": "9991645925878",
    "average_temperature": 18,   
    "temperature": [
        {
            "location": "hallway",
            "value": 19
        },
        {
            "location": "bedroom",
            "value": 18
        },
        {
            "location": "kitchen",
            "value": 18
        }
    ]
}

据我所知,这使用 ksql 是不可能的,有人可以确认吗?

【问题讨论】:

    标签: apache-kafka ksqldb


    【解决方案1】:

    正确,您目前无法在 KSQL 中执行此操作。从 v5.1 / 2019 年 3 月开始,KSQL 可以读取但不能构建嵌套对象:https://github.com/confluentinc/ksql/issues/2147(如果需要,请点赞/评论)

    您可以使用以下方法进行平均计算:

    SELECT timestamp, SUM(value)/COUNT(*) AS avg_temp \
      FROM input_stream \
      GROUP BY timestamp;
    

    【讨论】:

    • 谢谢,那么使用 steamsapi 创建处理器是可行的方法,还是我应该简单地写入数据库,然后从那里构造一个新流?
    • 非常确定您可以使用 Kafka Streams 做到这一点 - 我可以看到的问题只是消息结构操作,而 Java/Kafka Streams 可以让您灵活地做到这一点。
    • @SamShiles 对你的进展感兴趣。有相同/相似的要求。有什么可以分享的吗?
    • @DarVar 我们最终放弃了 kafka,对于我们正在探索的用例来说,太多事情还没有完成
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-24
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 2020-03-12
    • 2014-11-23
    相关资源
    最近更新 更多