[
https://issues.apache.org/jira/browse/FLINK-2021?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15110516#comment-15110516
]
ASF GitHub Bot commented on FLINK-2021:
---------------------------------------
Github user chiwanpark commented on a diff in the pull request:
https://github.com/apache/flink/pull/1536#discussion_r50394812
--- Diff:
flink-examples/flink-examples-batch/src/main/scala/org/apache/flink/examples/scala/clustering/KMeans.scala
---
@@ -104,36 +105,52 @@ object KMeans {
}
- private def parseParameters(programArguments: Array[String]): Boolean = {
- if (programArguments.length > 0) {
+ private val POINTS_PATH_OPTION: Option =
+ new Option("points").alt("P").help("The path to the input points")
+ private val CENTERS_PATH_OPTION: Option =
+ new Option("centroids").alt("C").help("The path to the input
centroids")
+ private val OUTPUT_PATH_OPTION: Option =
+ new Option("output").alt("O").help("The path where the output will be
written")
+ private val NUM_ITERATIONS_OPTION: Option =
+ new Option("iterations").alt("I").help("The number of iteration
performed by the K-Means algorithm")
+
+ @throws(classOf[RequiredParametersException])
+ private def parseParameters(params: ParameterTool): Boolean = {
+ val requiredParameters: RequiredParameters = new RequiredParameters
+ var parseStatus: Boolean = 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))
-
- true
- }
- else {
- System.err.println("Usage: KMeans <points path> <centers path>
<result path> <num " +
- "iterations>")
-
- false
+ parseStatus = true
+ }
+ catch {
+ case e: RequiredParametersException => {
+ if (params.getNumberOfParameters == 0) {
+ printRunWithDefaultParams()
+ parseStatus = true
+ }
+ else {
+ 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 parseStatus
+ }
- true
- }
+ private def printRunWithDefaultParams() {
+ println("Executing K-Means example with default parameters and
built-in default data.")
+ println(" Provide parameters to read input data from files.")
+ println(" See the documentation for the correct format of input
files.")
+ println(" We provide a data generator to create synthetic input files
for this program.")
+ println(" Usage: KMeans <points path> <centers path> <result path>
<num iterations>")
--- End diff --
This parameter description should be updated also.
> 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)