Updated on 2022-09-14 GMT+08:00

Writing Data

Function

Use the KuduClient.newSession() method to generate a KuduSession object and execute the record insertion action to the Kudu table.

Sample Code

The code snippet for writing data is as follows:

// Create a KuduSession. 
KuduSession session = client.newSession(); 
for (int i = 0; i < numRows; i++) { 
  Insert insert = table.newInsert(); 
  PartialRow row = insert.getRow(); 
  row.addInt("key", i); 
  // Make even-keyed row have a null 'value'. 
  if (i % 2 == 0) { 
 row.setNull("value"); 
  } else { 
 row.addString("value", "value " + i); 
  } 
  session.apply(insert); 
} 

// Call session.close() to end the session and ensure the rows are 
// flushed and errors are returned. 
// You can also call session.flush() to do the same without ending the session. 
// When flushing in AUTO_FLUSH_BACKGROUND mode (the default mode recommended 
// for most workloads, you must check the pending errors as shown below, since 
// write operations are flushed to Kudu in background threads. 
session.close(); 
if (session.countPendingErrors() != 0) { 
System.out.println("errors inserting rows"); 
  org.apache.kudu.client.RowErrorsAndOverflowStatus roStatus = session.getPendingErrors(); 
  org.apache.kudu.client.RowError[] errs = roStatus.getRowErrors(); 
  int numErrs = Math.min(errs.length, 5); 
  System.out.println("there were errors inserting rows to Kudu"); 
  System.out.println("the first few errors follow:"); 
  for (int i = 0; i < numErrs; i++) { 
 System.out.println(errs[i]); 
  } 
  if (roStatus.isOverflowed()) { 
 System.out.println("error buffer overflowed: some errors were discarded"); 
  } 
  throw new RuntimeException("error inserting rows to Kudu"); 
} 
System.out.println("Inserted " + numRows + " rows"); 

In the sample code, numRows indicates the number of records to be written. Pay special attention to the response result of the request.