第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何從 Kafka Producer 返回具有數(shù)十億條記錄的 ArrayList?

如何從 Kafka Producer 返回具有數(shù)十億條記錄的 ArrayList?

一只萌萌小番薯 2022-03-10 16:46:02
我準(zhǔn)備了一個(gè) kafka 生產(chǎn)者,它將一個(gè) List 放入 kafka 主題中。它適用于 100 萬(wàn)行/記錄。我得到的生產(chǎn)文件包含 1.1 億多條記錄。 在我的 KafkaProducer 處理如此龐大的數(shù)據(jù)的最佳方法是什么?下面是代碼,我曾經(jīng)處理過(guò) 100 萬(wàn)條記錄,將其放入 kafka 主題大約需要 4 分鐘。import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.RandomAccessFile;import java.nio.charset.StandardCharsets;import java.util.ArrayList;import java.util.List;import java.util.Map;import org.apache.kafka.connect.data.Schema;import org.apache.kafka.connect.data.SchemaBuilder;import org.apache.kafka.connect.data.Struct;import org.apache.kafka.connect.source.SourceRecord;import org.apache.kafka.connect.source.SourceTask;public class KafkaSourceTask extends SourceTask {    private String filename;    private String topic;    private RandomAccessFile raf;    private long lastRecordedOffset = 0L;    private BufferedReader bufferedReader = null;    Schema schema = SchemaBuilder.struct().field("emp_id",             Schema.STRING_SCHEMA).field("name", Schema.STRING_SCHEMA)            .field("last_name", Schema.STRING_SCHEMA).field("department",             Schema.STRING_SCHEMA).build();public void start(Map<String, String> props) {    filename = props.get("file");    topic = props.get("topic");}對(duì)此的任何幫助或建議將不勝感激。在此先感謝您。
查看完整描述

2 回答

?
慕無(wú)忌1623718

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ì)有所幫助。


查看完整回答
反對(duì) 回復(fù) 2022-03-10
?
慕碼人8056858

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)。


查看完整回答
反對(duì) 回復(fù) 2022-03-10
  • 2 回答
  • 0 關(guān)注
  • 156 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)