找不到适用于零实际参数的构造函数/方法-Apache Spark Java
在运行时,我的spark工作一直面临着奇怪的错误。我看不出MyBean类有什么问题,知道下面的驱动程序代码有什么问题吗?谢谢 Maven依赖项-找不到适用于零实际参数的构造函数/方法-Apache Spark Java,java,apache-spark,apache-spark-sql,spark-dataframe,apache-spark-dataset,Java,Apache Spark,Apache Spark Sql,Spark Dataframe,Apache Spark Dataset,在运行时,我的spark工作一直面临着奇怪的错误。我看不出MyBean类有什么问题,知道下面的驱动程序代码有什么问题吗?谢谢 Maven依赖项- <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.10</artifactId> <version>2.1.0</version> </dep
<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>
SparkSession spark = SparkSession.builder().config(conf).getOrCreate();
spark.createDataset(Arrays.asList(new MyBean(10),new MyBean(20)),
Encoders.bean(MyBean.class)).show();
运行时异常-
错误
org.codehaus.commons.compiler.CompileException:org.apache.spark.sql.catalyst.expressions.codegen.codegener
org.codehaus.commons.compiler.CompileException:文件'generated.java',
第43行第21列:未找到适用于零的构造函数/方法
实际参数;候选人是:“公共int”
com.ts.spark.datasets.MyBean.getI()”位于
org.codehaus.janino.UnitCompiler.compileError(UnitCompiler.java:11004)
在
org.codehaus.janino.UnitCompiler.findMostSpecificIIInvocable(UnitCompiler.java:8307)
在
org.codehaus.janino.UnitCompiler.findIMethod(UnitCompiler.java:8169)
在
org.codehaus.janino.UnitCompiler.findIMethod(UnitCompiler.java:8071)
Spark需要公共JavaBean类。看起来您正在创建
SparkSession
的同一个类中定义MyBean
类。解决此问题有两种选择。第一个选项是为MyBean.java
public类创建一个单独的类文件
public class MyBean implements Serializable {
int i;
//Getters and Setters
}
第二个选项是-将MyBean
定义为主类的公共静态内部类,如下所示
public class MyClass {
public static void main(String[] args) {
SparkSession spark = ...;
}
public static class MyBean implements Serializable {
int i;
//Getters and Setters
}
}
当我的类定义缺少默认构造函数时,我遇到了类似的错误 添加下面的内容对我很有用-
public myclass(){}对我来说,这只在我将所有数据成员定义为字符串时起作用,如果我定义Integer或int,则他无法找到正确的setter。。有什么想法吗?
public class MyClass {
public static void main(String[] args) {
SparkSession spark = ...;
}
public static class MyBean implements Serializable {
int i;
//Getters and Setters
}
}