public void doAppend() {while (recordItr.hasNext()) {// 获取记录HoodieRecord record = recordItr.next();// 初始化init(record);// 刷盘flushToDiskIfRequired(record);// 写入缓存writeToBuffer(record);}doAppend(header);estimate
有记录存在,则会进行初始化(init),初始化包括统计信息的初始化、HoodieLogFormatWriter的初始化等。 调用flushToDiskIfRequired进行刷盘处理,其核心代码如下 private void flushToDiskIfRequired ( HoodieRecord record ) { // 当前记录条数大于等于block块可以存的最大记录条数 if ( numberOfRecords...
代码逻辑如下: privatevoidinitWriteFunction(){finalStringwriteOperation=this.config.get(FlinkOptions.OPERATION);switch(WriteOperationType.fromValue(writeOperation)){caseINSERT:this.writeFunction=(records,instantTime)->this.writeClient.insert(records,instantTime);break;caseUPSERT:this.writeFunction=(records,instan...