static void updateSketch()

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());
      }
    }
  }