一、Flink中的ParameterTool工具类
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package org.apache.flink.api.java.utils;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.OutputStream;
import java.io.Serializable;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Objects;
import java.util.Properties;
import java.util.Set;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.commons.lang3.math.NumberUtils;
import org.apache.flink.annotation.Public;
import org.apache.flink.annotation.PublicEvolving;
import org.apache.flink.api.common.ExecutionConfig.GlobalJobParameters;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.util.Preconditions;
@Public
public class ParameterTool extends GlobalJobParameters implements Serializable, Cloneable {
private static final long serialVersionUID = 1L;
protected static final String NO_VALUE_KEY = "__NO_VALUE_KEY";
protected static final String DEFAULT_UNDEFINED = "<undefined>";
protected final Map<String, String> data;
protected transient Map<String, String> defaultData;
protected transient Set<String> unrequestedParameters;
public static ParameterTool fromArgs(String[] args) {
Map<String, String> map = new HashMap(args.length / 2);
int i = 0;
while(true) {
while(i < args.length) {
String key;
if (args[i].startsWith("--")) {
key = args[i].substring(2);
} else {
if (!args[i].startsWith("-")) {
throw new IllegalArgumentException(String.format("Error parsing arguments '%s' on '%s'. Please prefix keys with -- or -.", Arrays.toString(args), args[i]));
}
key = args[i].substring(1);
}
if (key.isEmpty()) {
throw new IllegalArgumentException("The input " + Arrays.toString(args) + " contains an empty argument");
}
++i;
if (i >= args.length) {
map.put(key, "__NO_VALUE_KEY");
} else if (NumberUtils.isNumber(args[i])) {
map.put(key, args[i]);
++i;
} else if (!args[i].startsWith("--") && !args[i].startsWith("-")) {
map.p