* Return args parser
*
* @return program parser
* */
private static OptionParser getParser() {
OptionParser parser = new OptionParser();
parser.accepts("help", "print help information");
parser.accepts("url", "[REQUIRED] bootstrap URL")
.withRequiredArg()
.describedAs("bootstrap-url")
.ofType(String.class);
parser.accepts("out-dir",
"[REQUIRED] Directory in which to output the key files (named \"{storeName}.keys\".")
.withRequiredArg()
.describedAs("outputDirectory")
.ofType(String.class);
parser.accepts("store-names",
"Store names to sample. Comma delimited list or singleton. [Default: ALL]")
.withRequiredArg()
.describedAs("storeNames")
.withValuesSeparatedBy(',')
.ofType(String.class);
parser.accepts("partition-ids",
"Partition IDs to sample for each store. Comma delimited list or singleton. [Default: ALL]")
.withRequiredArg()
.describedAs("partitionIds")
.withValuesSeparatedBy(',')
.ofType(Integer.class);
parser.accepts("parallelism",
"Number of nodes to sample in parallel. [Default: "
+ DEFAULT_NODE_PARALLELISM + " ]")
.withRequiredArg()
.describedAs("storeParallelism")
.ofType(Integer.class);
parser.accepts("records-per-partition",
"Number of keys sampled per partition. [Default: INF]")
.withRequiredArg()
.describedAs("recordsPerPartition")
.ofType(Integer.class);
parser.accepts("keys-per-second-limit",
"Number of keys sampled per second limit. [Default: "
+ DEFAULT_KEYS_PER_SECOND_LIMIT + " ]")
.withRequiredArg()
.describedAs("keysPerSecondLimit")
.ofType(Integer.class);
parser.accepts("progress-period-ops",
"Number of operations between progress info is displayed. [Default: "
+ DEFAULT_PROGRESS_PERIOD_OPS + " ]")
.withRequiredArg()
.describedAs("progressPeriodOps")
.ofType(Integer.class);