簡體   English   中英

在Kafka-Spark Streaming中吸收唯一記錄

[英]Ingesting unique records in Kafka-Spark Streaming

我有一個Kafka主題,該主題每分鍾獲取10K個事件,並且在Scala中編寫了Spark Streaming 2.3消費者以接收和攝取Cassandra。 傳入事件是具有“ userid”字段的JSON。 但是,如果再次出現具有相同userid的事件(即使具有不同的消息正文),我仍然不希望將其吸收到Cassandra中。 Cassandra表每天每時每刻都在增長,因此通過將表檢索到內存中的Spark數據幀中來查找直到此時為止遇到的所有用戶ID都是不可能的,因為該表將變得越來越大。 如何最好地僅提取唯一記錄?

updateStateByKey可以工作嗎? 狀態可以維持多長時間? 因為如果一年后使用相同的用戶名,我不想將其提取到Cassandra中。

使用像Aerospike這樣的外部低延遲外部DB,或者如果重復率很低,則可以使用內存中的布谷鳥/布谷鳥過濾器(即1年約4GB,每分鍾10K的速率),並通過Cassandra重新檢查匹配項如果出現誤報,請勿丟棄事件。

暫無
暫無

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

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