code: public SplitDataProperties<T> splitsGroupedBy(String groupFields) {
  
  		if (groupFields == null) {
  			throw new InvalidProgramException("GroupFields may not be null.");
  		}
  
  		String[] groupKeysA = groupFields.split(";");
  		if (groupKeysA.length == 0) {
  			throw new InvalidProgramException("GroupFields may not be empty.");
  		}
  
  		if (this.splitOrdering != null) {
  			throw new InvalidProgramException("DataSource may either be grouped or sorted.");
  		}
  
  		this.splitGroupKeys = getAllFlatKeys(groupKeysA);
  
  		return this;
  	}
docs: Defines that the data within an input split is grouped on the fields defined by the field expressions.
  Multiple field expressions must be separated by the semicolon ';' character.
  All records sharing the same key (combination) must be subsequently emitted by the input
  format for each input split.
  
  <p><b>
  IMPORTANT: Providing wrong information with SplitDataProperties can cause wrong results!
  </b>
  
  @param groupFields The field expressions of the grouping keys.
  @return This SplitDataProperties object.