我有来自3个不同服务器(3个数据流)的数据。是否可以在kinesis消费者应用程序中合并这些数据(更新/ upsert的类型)并将更新的数据作为输出?
我从流2,3中获得的数据取决于流1.例如,
Stream 1(ItemDetails) - {itemId,itemName,itemdescription},
stream 2(ItemtoCart) - {ItemId},
流3(订购) - {ItemId}。
我期待的最终流输出是
OutputStream - {itemId,itemName,itemdescription,itemtoCart_flag, itemOrdered_flag}
流1正在以10K记录/秒的速率接收数据。
答案 0 :(得分:1)
假设有三个流,如下所示,
stream event in stream
stream1(ItemPurchased) - {"item" : 1, "totalQuantity": 100}
stream2(ItemOrdered) - {"item" : 1, "sold": 1}
stream3(ItemCancelled) - {"item" : 1, "orderCancelled": 1}
这些流用于购买物品,然后出售和/或取消。
说,我想从这些事件中建立项目可用数量的最终状态。 我会做的是,
州过渡表
stream events consumer/onEvent state (could be MongoDB, Cassandra)
stream1(ItemPurchased) - {"item" : 1, "totalQuantity": 100} -> create new state -> {"item" : 1, "availableQuantity": 100}
stream2(ItemOrdered) - {"item" : 1, "sold": 1} -> decrease the quantity -> {"item" : 1, "availableQuantity": 100 - 1}
stream3(ItemCancelled) - {"item" : 1, orderCancelled: 1} -> increase the quantity -> {"item" : 1, "availableQuantity": 99 + 1}
希望能回答你的问题,但不像你问的那样,最终的状态表不是流。