我正在向kafka記錄頁面訪問和搜索查詢(某種點擊流分析)。我打算定期批量處理它們,比如每小時或每天,然後將彙總結果寫入elasticsearch。每小時或每天都有一個kafka話題是典型的嗎?
如果沒有寫入kafka,而是寫入文件系統,則很容易將記錄器配置爲寫入文件名中帶有時間戳的文件,該文件按照小時/天的間隔自動分隔日誌。
但與卡夫卡,我GOOGLE了足夠多的時間,還沒有找到每小時/每天創建一個新的話題的任何例子。如果不每小時/每天創建一個新話題,我只能想象通過logstash/flume將日誌從kafka移動到文件系統或hdfs。
是否很少直接在kafka上進行批處理(每小時/天)?
我不確定我明白你爲什麼每小時/每天需要一個新話題。爲什麼不將所有日誌發送到單個主題,並進行批處理?每次處理後,主題分區上提交的偏移量都會前移,因此您將不會重新處理相同的日誌。 – vahid
如果所有數據都寫入同一主題,因爲它們可能以不同的順序到達,這意味着數據中的「CreatedTime」可能沒有排序。要確定每一天的界限是很困難的(儘管在我的情況下可能會有輕微的不準確性)。如果寫了不同的主題,我可以很容易地檢查某個主題的上次修改時間是否比當前時間早得多(假設我的批次每天在上午00:10運行)。 – foresightyj
您可以通過一個鍵在邏輯上對主題進行分區(在這種情況下,鍵可以是一天中的小時)。卡夫卡將確保所有具有相同密鑰的消息進入相同的分區,並因此被單個消費者線程佔用。 – Rahul