public Frame outputFrame(Key<Frame> key, String [] names, String [][] domains){
    Futures fs = new Futures();
    Frame res = closeFrame(key, names, domains, fs);
    if( key != null ) DKV.put(res,fs);
    fs.blockForPending();
    return res;
  }
public Frame outputFrame ( Key < Frame > key , String [ ] names , String [ ] [ ] domains ) { Futures fs = new Futures ( ) ; Frame res = closeFrame ( key , names , domains , fs ) ; if ( key != null ) DKV . put ( res , fs ) ; fs . blockForPending ( ) ; return res ; }
Get the resulting Frame from this invoked MRTask. If the passed in <code>key</code>
is not null, then the resulting Frame will appear in the DKV. AppendableVec instances
are closed into Vec instances, which then appear in the DKV.

@param key If null, then the Frame will not appear in the DKV. Otherwise, this result
will appear in the DKV under this key.
@param names The names of the columns in the resulting Frame.
@param domains The domains of the columns in the resulting Frame.
@return null if _noutputs is 0, otherwise returns a Frame.