[ 
https://issues.apache.org/jira/browse/FLINK-2021?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15110570#comment-15110570
 ] 

ASF GitHub Bot commented on FLINK-2021:
---------------------------------------

Github user stefanobaghino commented on a diff in the pull request:

    https://github.com/apache/flink/pull/1536#discussion_r50399418
  
    --- Diff: 
flink-examples/flink-examples-batch/src/main/java/org/apache/flink/examples/java/clustering/KMeans.java
 ---
    @@ -291,31 +297,54 @@ public Centroid map(Tuple3<Integer, Point, Long> 
value) {
        private static String centersPath = null;
        private static String outputPath = null;
        private static int numIterations = 10;
    -   
    -   private static boolean parseParameters(String[] programArguments) {
    -           
    -           if(programArguments.length > 0) {
    -                   // parse input arguments
    +
    +   private static final Option POINTS_PATH_OPTION =
    +           new Option("points").alt("P").help("The path to the input 
points");
    +   private static final Option CENTERS_PATH_OPTION =
    +           new Option("centroids").alt("C").help("The path to the input 
centroids");
    +   private static final Option OUTPUT_PATH_OPTION =
    +           new Option("output").alt("O").help("The path where the output 
will be written");
    +   private static final Option NUM_ITERATIONS_OPTION =
    +           new Option("iterations").alt("I").help("The number of iteration 
performed by the K-Means algorithm");
    +
    +   private static boolean parseParameters(final ParameterTool params) 
throws RequiredParametersException {
    +
    +           final RequiredParameters requiredParameters = new 
RequiredParameters();
    +           boolean parseStatus = false;
    +
    +           requiredParameters.add(POINTS_PATH_OPTION);
    +           requiredParameters.add(CENTERS_PATH_OPTION);
    +           requiredParameters.add(OUTPUT_PATH_OPTION);
    +           requiredParameters.add(NUM_ITERATIONS_OPTION);
    +
    +           try {
    +                   requiredParameters.applyTo(params);
    +                   pointsPath = params.get(POINTS_PATH_OPTION.getName());
    +                   centersPath = params.get(CENTERS_PATH_OPTION.getName());
    +                   outputPath = params.get(OUTPUT_PATH_OPTION.getName());
    +                   numIterations = 
params.getInt(NUM_ITERATIONS_OPTION.getName());
                        fileOutput = true;
    -                   if(programArguments.length == 4) {
    -                           pointsPath = programArguments[0];
    -                           centersPath = programArguments[1];
    -                           outputPath = programArguments[2];
    -                           numIterations = 
Integer.parseInt(programArguments[3]);
    +                   parseStatus = true;
    +           } catch (RequiredParametersException e) {
    +                   if (params.getNumberOfParameters() == 0) {
    +                           printRunWithDefaultParams();
    +                           parseStatus = true;
                        } else {
    -                           System.err.println("Usage: KMeans <points path> 
<centers path> <result path> <num iterations>");
    -                           return false;
    +                           
System.out.println(requiredParameters.getHelp(e.getMissingArguments()));
                        }
    -           } else {
    -                   System.out.println("Executing K-Means example with 
default parameters and built-in default data.");
    -                   System.out.println("  Provide parameters to read input 
data from files.");
    -                   System.out.println("  See the documentation for the 
correct format of input files.");
    -                   System.out.println("  We provide a data generator to 
create synthetic input files for this program.");
    -                   System.out.println("  Usage: KMeans <points path> 
<centers path> <result path> <num iterations>");
                }
    -           return true;
    +
    +           return parseStatus;
        }
    -   
    +
    +   private static void printRunWithDefaultParams() {
    +           System.out.println("Executing K-Means example with default 
parameters and built-in default data.");
    +           System.out.println("  Provide parameters to read input data 
from files.");
    +           System.out.println("  See the documentation for the correct 
format of input files.");
    +           System.out.println("  We provide a data generator to create 
synthetic input files for this program.");
    +           System.out.println("  Usage: KMeans <points path> <centers 
path> <result path> <num iterations>");
    --- End diff --
    
    Thanks for making me notice it, I'll fix it right away!


> Rework examples to use ParameterTool
> ------------------------------------
>
>                 Key: FLINK-2021
>                 URL: https://issues.apache.org/jira/browse/FLINK-2021
>             Project: Flink
>          Issue Type: Improvement
>          Components: Examples
>    Affects Versions: 0.9
>            Reporter: Robert Metzger
>            Priority: Minor
>              Labels: starter
>
> In FLINK-1525, we introduced the {{ParameterTool}}.
> We should port the examples to use the tool.
> The examples could look like this (we should maybe discuss it first on the 
> mailing lists):
> {code}
> public static void main(String[] args) throws Exception {
>     ParameterTool pt = ParameterTool.fromArgs(args);
>     boolean fileOutput = pt.getNumberOfParameters() == 2;
>     String textPath = null;
>     String outputPath = null;
>     if(fileOutput) {
>         textPath = pt.getRequired("input");
>         outputPath = pt.getRequired("output");
>     }
>     // set up the execution environment
>     final ExecutionEnvironment env = 
> ExecutionEnvironment.getExecutionEnvironment();
>     env.getConfig().setUserConfig(pt);
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to