未找到零个实际参数的适用 constructor/method - Apache Spark Java
No applicable constructor/method found for zero actual parameters - Apache Spark Java
我的 spark 作业在运行时遇到了奇怪的错误。我没有发现 MyBean
class 有任何问题,知道下面的 driver 代码有什么问题吗?谢谢
Maven 依赖项-
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.10</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.10</artifactId>
<version>2.1.0</version>
</dependency>
Driver-
SparkSession spark = SparkSession.builder().config(conf).getOrCreate();
spark.createDataset(Arrays.asList(new MyBean(10),new MyBean(20)),
Encoders.bean(MyBean.class)).show();
.....
class MyBean implements Serializable {
int i;
public MyBean(){}
public MyBean(int i){this.i=i;}
public int getI() {return i;}
public void setI(int i) {this.i = i;}
}
运行时异常-
ERROR
org.codehaus.commons.compiler.CompileException:org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator
org.codehaus.commons.compiler.CompileException: File 'generated.java',
Line 43, Column 21: No applicable constructor/method found for zero
actual parameters; candidates are: "public int
com.ts.spark.datasets.MyBean.getI()" at
org.codehaus.janino.UnitCompiler.compileError(UnitCompiler.java:11004)
at
org.codehaus.janino.UnitCompiler.findMostSpecificIInvocable(UnitCompiler.java:8307)
at
org.codehaus.janino.UnitCompiler.findIMethod(UnitCompiler.java:8169)
at
org.codehaus.janino.UnitCompiler.findIMethod(UnitCompiler.java:8071)
Spark 需要 public JavaBean class。看起来您在创建 SparkSession
的同一 class 中定义了 MyBean
class。有两种选择可以解决此问题。第一个选项是 - 为 MyBean.java
public class 创建一个单独的 class 文件。
public class MyBean implements Serializable {
int i;
//Getters and Setters
}
第二个选项是 - 将 MyBean
定义为主要 class 的 public 静态内部 class,如下所示。
public class MyClass {
public static void main(String[] args) {
SparkSession spark = ...;
}
public static class MyBean implements Serializable {
int i;
//Getters and Setters
}
}
当我的 class 定义与默认构造函数一起丢失时,我遇到了类似的错误。
添加下面的代码对我有用 -
public myclass() {}
我的 spark 作业在运行时遇到了奇怪的错误。我没有发现 MyBean
class 有任何问题,知道下面的 driver 代码有什么问题吗?谢谢
Maven 依赖项-
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.10</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.10</artifactId>
<version>2.1.0</version>
</dependency>
Driver-
SparkSession spark = SparkSession.builder().config(conf).getOrCreate();
spark.createDataset(Arrays.asList(new MyBean(10),new MyBean(20)),
Encoders.bean(MyBean.class)).show();
.....
class MyBean implements Serializable {
int i;
public MyBean(){}
public MyBean(int i){this.i=i;}
public int getI() {return i;}
public void setI(int i) {this.i = i;}
}
运行时异常-
ERROR org.codehaus.commons.compiler.CompileException:org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator org.codehaus.commons.compiler.CompileException: File 'generated.java', Line 43, Column 21: No applicable constructor/method found for zero actual parameters; candidates are: "public int com.ts.spark.datasets.MyBean.getI()" at org.codehaus.janino.UnitCompiler.compileError(UnitCompiler.java:11004) at org.codehaus.janino.UnitCompiler.findMostSpecificIInvocable(UnitCompiler.java:8307) at org.codehaus.janino.UnitCompiler.findIMethod(UnitCompiler.java:8169) at org.codehaus.janino.UnitCompiler.findIMethod(UnitCompiler.java:8071)
Spark 需要 public JavaBean class。看起来您在创建 SparkSession
的同一 class 中定义了 MyBean
class。有两种选择可以解决此问题。第一个选项是 - 为 MyBean.java
public class 创建一个单独的 class 文件。
public class MyBean implements Serializable {
int i;
//Getters and Setters
}
第二个选项是 - 将 MyBean
定义为主要 class 的 public 静态内部 class,如下所示。
public class MyClass {
public static void main(String[] args) {
SparkSession spark = ...;
}
public static class MyBean implements Serializable {
int i;
//Getters and Setters
}
}
当我的 class 定义与默认构造函数一起丢失时,我遇到了类似的错误。
添加下面的代码对我有用 -
public myclass() {}