Gradle
코로나바이러스가 한창이다. 영화 컨테이젼을 보다가 gradle의 뜻을 깨달았다. 영화 마지막에 U2 노래가 흐르더라. ... from the cradle to the grave~
/**
* 중복행 오류로 Insert에 실패한 Operation을 update시키기 위해 row copy
* @param insertOperation the operation that failed insert
* @return update operation
* @throws FlumeException
*/
private Operation getUpdateOperationFrom(Operation insertOperation) throws FlumeException {
try {
PartialRow rowInsert = insertOperation.getRow();
Schema schema = table.getSchema();
int schemaColumnCount = schema.getColumnCount();
List columns = schema.getColumns();
Operation operation = table.newUpdate();
PartialRow rowUpdate = operation.getRow();
for (int i = 0; i < schemaColumnCount; i++)
{
if (rowInsert.isNull(i))
rowUpdate.setNull(i);
else
{
switch (columns.get(i).getType()) {
case INT8:
rowUpdate.addByte(i, rowInsert.getByte(i));
break;
case INT16:
rowUpdate.addShort(i, rowInsert.getShort(i));
break;
case INT32:
rowUpdate.addInt(i, rowInsert.getInt(i));
break;
case INT64:
rowUpdate.addLong(i, rowInsert.getInt(i));
break;
case BINARY:
rowUpdate.addBinary(i, rowInsert.getBinaryCopy(i));
break;
case STRING:
rowUpdate.addString(i, rowInsert.getString(i));
break;
case BOOL:
rowUpdate.addBoolean(i, rowInsert.getBoolean(i));
break;
case FLOAT:
rowUpdate.addFloat(i, rowInsert.getFloat(i));
break;
case DOUBLE:
rowUpdate.addDouble(i, rowInsert.getDouble(i));
break;
case UNIXTIME_MICROS:
rowUpdate.addLong(i, rowInsert.getLong(i));
break;
default:
logger.warn("got unknown type {} for column '{}' during produce update operation -- ignoring this column",
columns.get(i).getType(), columns.get(i).getName());
}
}
}
return operation;
} catch (Exception e) {
throw new FlumeException("Failed to create Kudu Upsert object", e);
}
}