2 回答

TA貢獻(xiàn)1744條經(jīng)驗(yàn) 獲得超4個(gè)贊
首先,在將 Kafka 生產(chǎn)者批處理記錄發(fā)送給代理之前,您應(yīng)該檢查并使用這兩個(gè)配置linger.ms
和batch.record.size
.
現(xiàn)在您可以使用另一個(gè)線程來(lái)讀取文件(我認(rèn)為它是每行一條記錄)并將它們放入 java 隊(duì)列中,并使用托管 kafka 生產(chǎn)者的線程連續(xù)讀取該隊(duì)列。
多個(gè)生產(chǎn)者被認(rèn)為是一種反模式,尤其是在寫(xiě)入 Kafka 主題時(shí),請(qǐng)查看 Single Writer Principle。
好吧,無(wú)論哪種方式,您都必須稍微調(diào)整一下您的 kafka 生產(chǎn)者,但就像@cricket_007 所說(shuō),您應(yīng)該考慮使用帶有文件 csv 連接器的 kafka 連接,至少如果您找不到適合您的連接器,您可以開(kāi)發(fā)一個(gè)連接器自己。
希望這會(huì)有所幫助。

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超6個(gè)贊
擁有數(shù)十億條記錄的 ArrayList?想想看,如果你有 10 億條記錄,而每條記錄的大小只有 1 個(gè)字節(jié)(一個(gè)可笑的低估),你就有 1 個(gè) SI GB 的內(nèi)存消耗。
根據(jù)“大數(shù)據(jù)”的粗略和現(xiàn)成的定義,作為不適合單個(gè)主機(jī)上內(nèi)存的數(shù)據(jù),你要么處于邊緣,要么超過(guò)那個(gè)點(diǎn),你需要開(kāi)始使用大數(shù)據(jù)技術(shù)。首先你可以嘗試多線程,然后你可以在多臺(tái)機(jī)器上嘗試多線程,這是使用 Kafka 的優(yōu)勢(shì)——客戶(hù)端 API——無(wú)論是從消費(fèi)端還是生產(chǎn)端,都可以輕松實(shí)現(xiàn)。
添加回答
舉報(bào)