Я пытаюсь прочитать аргументы, переданные в jar-файл, но я сомневаюсь - если есть какой-то способ, которым мы можем прочитать конструктор переменных родительского класса непосредственно из подкласса, например,
KafkaSparkStreaming - мой родительский класси мое hbaseconnection является моим подклассом, теперь я сомневаюсь, как получить имя хоста из родительского класса, передаваемого в качестве аргументов моему дочернему классу Hbaseconnection. Также я не хочу устанавливать это как параметр, возможно, полное понимание передачи по ссылке и значение может быть неправильным.
РОДИТЕЛЬСКИЙ КЛАСС
public class KafkaSparkStreaming {
public String hostDetails;
public String zipCodePath;
public KafkaSparkStreaming(String[] args){
this.hostDetails = args[0];
this.zipCodePath = args[1];
}
public static void main(String[] args) throws Exception {
if(args.length<2) {
System.out.println("Arguments must be supplied ");
System.out.println("Usage: args[0] --> hostName args[1] --> path of zipcodecsv file");
System.exit(1);
}
KafkaSparkStreaming cdhHost = new KafkaSparkStreaming(args);
}
}
ДЕТСКИЙ КЛАСС
public class HbaseConnection extends KafkaSparkStreaming implements
Serializable {
public static String host;
public HbaseConnection(String[] args) {
super(args);
}
private static final long serialVersionUID = 1L;
static Admin hbaseAdmin = null;
public static Admin getHbaseAdmin() throws IOException {
org.apache.hadoop.conf.Configuration conf =
(org.apache.hadoop.conf.Configuration) HBaseConfiguration.create();
conf.setInt("timeout", 12000000);
conf.set("hbase.master","cloudera-instance:60000");
conf.set("hbase.zookeeper.quorum", "cloudera-instance");
conf.set("hbase.zookeeper.property.clientPort", "2181");
conf.set("zookeeper.znode.parent", "/hbase");
Connection con = ConnectionFactory.createConnection(conf);
try {
if (hbaseAdmin == null)
//hbaseAdmin = new HBaseAdmin(conf);
hbaseAdmin = con.getAdmin();
} catch (Exception e) {
e.printStackTrace();
}
return hbaseAdmin;
}