Я хочу добавить некоторый код в код Java, сгенерированный Spark-SQL. Поэтому я создаю файл jar с классом «Сотрудник» и вручную вставляю «Сотрудник e = новый сотрудник (некоторое целое число)» в файл: sql/core/src/main/scala/org/apache/spark/sql/execution /WholeStageCodegenExec.scala. При вызове spark-shell я сделал «spark-shell --jars /path/to/myJar.jar». Однако, когда я запускаю запрос, он сообщает об этой ошибке: ОШИБКА CodeGenerator: не удалось скомпилировать: org.codehaus.commons.compiler.CompileException: файл 'generated.java', строка 21, столбец 18: не найден применимый конструктор/метод для фактические параметры "int"; кандидаты: «Сотрудник ()», «Сотрудник (int)», «Сотрудник (java.lang.String)»
Большинство подобных вопросов, которые я нашел в Интернете, связаны с несоответствием типа параметра, однако у меня есть конструктор Employee(int), как вы можете видеть здесь, почему Янино все еще жаловался на это ??
Пример моего сотрудника довольно прост:
public class Employee {
String name = "Default";
int age;
int ID;
Employee() {
System.out.println("Empty constructor");
}
Employee(String myName) {
name = myName;
}
Employee(int myAge) {
age = myAge;
}
void sayHi() {
System.out.println("Hello, I'm " + name);
}
void sayhello() {
System.out.println("Hello,test");
}
}
И модифицированный сгенерированный код также прост, как:
public void init(int index, scala.collection.Iterator[] inputs) {
String name = "Go";
int age = 30;
Employee e1 = new Employee(age);
e1.sayHi();
Очень ценю вашу помощь!!!