簡體   English   中英

如何將我的 Kafka 主題減少到最新狀態的 ktable

[英]How can I reduce my Kafka topic into a ktable of most recent state

我在以實體 ID 為鍵的主題中有一些制造商的虛擬數據:

{"ROWTIME": 1581884260481, "ROWKEY": "key1", "name": "nissan", "id": "key1", "founded": 1910}
{"ROWTIME": 1581884260481, "ROWKEY": "key2", "name": "toyota", "id": "key2", "founded": 0}
{"ROWTIME": 1581894249560, "ROWKEY": "key2", "name": "toyota", "id": "key2", "founded": 1920}

1)我想最終得到一個包含制造商簡化狀態的ktable:

{"name": "nissan", "id": "key1", "founded": 1910},
{"name": "toyota", "id": "key2", "founded": 1920}

問:ksql 中產生這種簡化狀態的查詢語法是什么?

所有文檔都是在 pull/push 查詢更改之前編寫的,所以我不確定我應該如何構建它。 我想要物化視圖(需要聚合)還是主題上的 ktable? 我需要 CTaS 嗎?

1b) 我一直在考慮這個問題,如果存儲的主題只是更改而不是整個記錄,那可能是最好的。 在那種情況下,我可以只編寫最終將歸結為狀態的一部分的事件,而不必查詢當前記錄或信任 UI 將整個事件傳回。

2)當我查詢這個表時,我希望發生兩件事:

  • 給我減少狀態的列表(上面的2條記錄)
  • 如果發生任何更新(插入或更新到簡化列表),請在發生時發送它們

問:我可以創建什么查詢來提供 ktable 中的當前值和未來值?

emit changes似乎只從那個時間點開始。 我需要兩個查詢,還是有辦法一次性完成?

感謝您幫助我填補這些空白,不勝感激。

“rowtime”和“rowkey”是“Ksql_server”添加的默認字段,它們是流/表連接(窗口和分區)期間有用的列。

  1. 1a) 您可以跳過消費者級別的列。 1b) 沒能理解:(
  2. 該鏈接會有所幫助( https://www.confluent.io/blog/kafka-streams-tables-part-1-event-streaming/
  3. 您不需要進行任何更改,因為如果您創建了 KTable,則只會追加新記錄,您可以使用 select 查詢進行檢查。

希望它會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM