4949import java .util .LinkedList ;
5050import java .util .List ;
5151import java .util .Map ;
52+ import java .util .Objects ;
5253import java .util .concurrent .ScheduledExecutorService ;
5354import java .util .concurrent .ScheduledFuture ;
5455import java .util .concurrent .ScheduledThreadPoolExecutor ;
@@ -223,12 +224,23 @@ public void writeBatchRecord(Row row) {
223224
224225 protected synchronized void dealBatchOperation (List <Row > records ) {
225226 // A null in the result array means that the call for that action failed, even after retries.
226- Object [] results = new Object [ records . size ()] ;
227+ Object [] results = null ;
227228 try {
228229 List <Put > puts = new ArrayList <>();
229230 for (Row record : records ) {
230- puts .add (getPutByRow (record ));
231+ Put put = getPutByRow (record );
232+ if (put == null || put .isEmpty ()) {
233+ dirtyDataManager .execute ();
234+ dirtyDataManager .collectDirtyData (
235+ record .toString (),
236+ "HBase put is empty, check record please!"
237+ );
238+ outDirtyRecords .inc ();
239+ } else {
240+ puts .add (put );
241+ }
231242 }
243+ results = new Object [puts .size ()];
232244 table .batch (puts , results );
233245
234246 // 打印结果
@@ -240,7 +252,7 @@ protected synchronized void dealBatchOperation(List<Row> records) {
240252 // ignore exception
241253 } finally {
242254 // 判断数据是否插入成功
243- for (int i = 0 ; i < results .length ; i ++) {
255+ for (int i = 0 ; i < Objects . requireNonNull ( results ) .length ; i ++) {
244256 if (results [i ] instanceof Exception ) {
245257 dirtyDataManager .execute ();
246258 // 脏数据记录
0 commit comments