Github user rmetzger commented on a diff in the pull request:
https://github.com/apache/flink/pull/1536#discussion_r50401470
--- 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 <points path>
--centroids <centers path> --output <result path> --iterations <num
iterations>");
--- End diff --
I think you can generate the usage information from the required parameters
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---