code: public ResourceSchema getSchema(String location, Job job) throws IOException
      {
          setLocation(location, job);
          CfInfo cfInfo = getCfInfo(loadSignature);
          CfDef cfDef = cfInfo.cfDef;
          // top-level schema, no type
          ResourceSchema schema = new ResourceSchema();
  
          // get default marshallers and validators
          Map<MarshallerType, AbstractType> marshallers = getDefaultMarshallers(cfDef);
          Map<ByteBuffer, AbstractType> validators = getValidatorMap(cfDef);
  
          // will contain all fields for this schema
          List<ResourceFieldSchema> allSchemaFields = new ArrayList<ResourceFieldSchema>();
  
          for (ColumnDef cdef : cfDef.column_metadata)
          {
              ResourceFieldSchema valSchema = new ResourceFieldSchema();
              AbstractType validator = validators.get(cdef.name);
              if (validator == null)
                  validator = marshallers.get(MarshallerType.DEFAULT_VALIDATOR);
              valSchema.setName(new String(cdef.getName()));
              valSchema.setType(getPigType(validator));
              allSchemaFields.add(valSchema);
          }
  
          // top level schema contains everything
          schema.setFields(allSchemaFields.toArray(new ResourceFieldSchema[allSchemaFields.size()]));
          return schema;
      }
docs: schema: (value, value, value) where keys are in the front.