public Schema outputSchema()

in datafu-pig/src/main/java/datafu/pig/sampling/WeightedSample.java [170:197]


  public Schema outputSchema(Schema input) {
    try {
      if (!(input.size() == 2 || input.size() == 3))
      {
        throw new RuntimeException("Expected input to have two or three fields");
      }
      
      Schema.FieldSchema inputFieldSchema = input.getField(0);

      if (inputFieldSchema.type != DataType.BAG) {
        throw new RuntimeException("Expected a BAG as first input, got: "+inputFieldSchema.type);
      }
      
      if (input.getField(1).type != DataType.INTEGER) {
        throw new RuntimeException("Expected an INT as second input, got: "+input.getField(1).type);
      }      
      
      if (input.size() == 3 && !(input.getField(2).type == DataType.INTEGER || input.getField(2).type == DataType.LONG)) {
        throw new RuntimeException("Expected an INT or LONG as second input, got: "+input.getField(2).type);
      }
      
      return new Schema(new Schema.FieldSchema(getSchemaName(this.getClass().getName().toLowerCase(), input),
                                               inputFieldSchema.schema, DataType.BAG));    
    } catch (FrontendException e) {
      e.printStackTrace();
      throw new RuntimeException(e);
    }
  }