public Schema outputSchema()

in src/main/java/org/apache/datasketches/pig/sampling/VarOptSampling.java [125:156]


  public Schema outputSchema(final Schema input) {
    try {
      if ((input == null) || (input.size() == 0)) {
        throw new IllegalArgumentException("Degenerate input schema to VarOptSampling");
      }

      // first element must be a bag, weightIdx_ element of tuples must be a float or double
      if (input.getField(0).type != DataType.BAG) {
        throw new IllegalArgumentException("VarOpt input must be a data bag: "
                + input.toString());
      }

      final Schema record = input.getField(0).schema; // record has a tuple in field 0
      final Schema fields = record.getField(0).schema;
      if ((fields.getField(this.weightIdx_).type != DataType.DOUBLE)
              && (fields.getField(this.weightIdx_).type != DataType.FLOAT)) {
        throw new IllegalArgumentException("weightIndex item of VarOpt tuple must be a "
                + "weight (double/float), found " + fields.getField(0).type
                + ": " + fields.toString());
      }

      final Schema weightedSampleSchema = new Schema();
      weightedSampleSchema.add(new Schema.FieldSchema(WEIGHT_ALIAS, DataType.DOUBLE));
      weightedSampleSchema.add(new Schema.FieldSchema(RECORD_ALIAS, record, DataType.TUPLE));

      return new Schema(new Schema.FieldSchema(getSchemaName(this
              .getClass().getName().toLowerCase(), record), weightedSampleSchema, DataType.BAG));
    }
    catch (final FrontendException e) {
      throw new RuntimeException(e);
    }
  }