docs: public static void main(String[] args) throws Exception {
  
  		final ParameterTool params = ParameterTool.fromArgs(args);
  
  		// set up execution environment
  		final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
  
  		final int iterations = params.getInt("iterations", 10);
  
  		// make parameters available in the web interface
  		env.getConfig().setGlobalJobParameters(params);
  
  		// get input x data from elements
  		DataSet<Data> data;
  		if (params.has("input")) {
  			// read data from CSV file
  			data = env.readCsvFile(params.get("input"))
  					.fieldDelimiter(" ")
  					.includeFields(true, true)
  					.pojoType(Data.class);
  		} else {
  			System.out.println("Executing LinearRegression example with default input data set.");
  			System.out.println("Use --input to specify file input.");
  			data = LinearRegressionData.getDefaultDataDataSet(env);
  		}
  
  		// get the parameters from elements
  		DataSet<Params> parameters = LinearRegressionData.getDefaultParamsDataSet(env);
  
  		// set number of bulk iterations for SGD linear Regression
  		IterativeDataSet<Params> loop = parameters.iterate(iterations);
  
  		DataSet<Params> newParameters = data
  				// compute a single step using every sample
  				.map(new SubUpdate()).withBroadcastSet(loop, "parameters")
  				// sum up all the steps
  				.reduce(new UpdateAccumulator())
  				// average the steps and update all parameters
  				.map(new Update());
  
  		// feed new parameters back into next iteration
  		DataSet<Params> result = loop.closeWith(newParameters);
  
  		// emit result
  		if (params.has("output")) {
  			result.writeAsText(params.get("output"));
  			// execute program
  			env.execute("Linear Regression example");
  		} else {
  			System.out.println("Printing result to stdout. Use --output to specify output path.");
  			result.print();
  		}
  	}