in hbase-table-reporter/src/main/java/org/apache/hbase/reporter/TableReporter.java [463:543]
public static void main(String [] args)
throws ParseException, IOException, ExecutionException, InterruptedException {
Options options = new Options();
Option help = Option.builder("h").longOpt("help").
desc("output this help message").build();
options.addOption(help);
Option limitOption = Option.builder("l").longOpt("limit").hasArg().build();
options.addOption(limitOption);
Option fractionOption = Option.builder("f").longOpt("fraction").hasArg().build();
options.addOption(fractionOption);
Option regionOption = Option.builder("r").longOpt("region").hasArg().build();
options.addOption(regionOption);
Option threadsOption = Option.builder("t").longOpt("threads").hasArg().build();
options.addOption(threadsOption);
Option configOption = Option.builder("D").valueSeparator().argName("property=value").
hasArgs().build();
options.addOption(configOption);
// Parse command-line.
CommandLineParser parser = new DefaultParser();
CommandLine commandLine = parser.parse(options, args);
// Process general options.
if (commandLine.hasOption(help.getOpt()) || commandLine.getArgList().isEmpty()) {
usage(options);
System.exit(0);
}
int limit = -1;
String opt = limitOption.getOpt();
if (commandLine.hasOption(opt)) {
limit = Integer.parseInt(commandLine.getOptionValue(opt));
}
double fraction = 1.0;
opt = fractionOption.getOpt();
if (commandLine.hasOption(opt)) {
fraction = Double.parseDouble(commandLine.getOptionValue(opt));
if (fraction > 1 || fraction <= 0) {
usage(options, "Bad fraction: " + fraction + "; fraction must be > 0 and < 1");
System.exit(0);
}
}
int threads = 1;
opt = threadsOption.getOpt();
if (commandLine.hasOption(opt)) {
threads = Integer.parseInt(commandLine.getOptionValue(opt));
if (threads > 1000 || threads <= 0) {
usage(options, "Bad thread count: " + threads + "; must be > 0 and < 1000");
System.exit(0);
}
}
String encodedRegionName = null;
opt = regionOption.getOpt();
if (commandLine.hasOption(opt)) {
encodedRegionName = commandLine.getOptionValue(opt);
}
Configuration configuration = HBaseConfiguration.create();
opt = configOption.getOpt();
if (commandLine.hasOption(opt)) {
// If many options, they all show up here in the keyValues
// array, one after the other.
String [] keyValues = commandLine.getOptionValues(opt);
for (int i = 0; i < keyValues.length;) {
configuration.set(keyValues[i], keyValues[i + 1]);
i += 2; // Skip over this key and value to next one.
}
}
// Now process commands.
String [] commands = commandLine.getArgs();
if (commands.length < 1) {
usage(options, "No TABLENAME: " + Arrays.toString(commands));
System.exit(1);
}
String now = Instant.now().toString();
for (String command : commands) {
sketch(configuration, command, limit, fraction, threads, now, encodedRegionName);
}
}