in src/main/java/org/apache/datasketches/pig/cpc/DataToSketch.java [204:249]
static void updateSketch(final DataBag bag, final CpcSketch sketch) throws ExecException {
// bag is not empty, process each innerTuple in the bag
for (final Tuple innerTuple: bag) {
final Object f0 = innerTuple.get(0); // consider only field 0
if (f0 == null) {
continue;
}
final byte type = innerTuple.getType(0);
switch (type) {
case DataType.NULL:
break;
case DataType.BYTE:
sketch.update((byte) f0);
break;
case DataType.INTEGER:
sketch.update((int) f0);
break;
case DataType.LONG:
sketch.update((long) f0);
break;
case DataType.FLOAT:
sketch.update((float) f0);
break;
case DataType.DOUBLE:
sketch.update((double) f0);
break;
case DataType.BYTEARRAY: {
final DataByteArray dba = (DataByteArray) f0;
sketch.update(dba.get());
break;
}
case DataType.CHARARRAY: {
final String str = (String) f0;
// conversion to char[] avoids costly UTF-8 encoding
sketch.update(str.toCharArray());
break;
}
default:
throw new IllegalArgumentException("Field 0 of innerTuple must be one of "
+ "NULL, BYTE, INTEGER, LONG, FLOAT, DOUBLE, BYTEARRAY or CHARARRAY. "
+ "Given Type = " + DataType.findTypeName(type)
+ ", Object = " + f0.toString());
}
}
}