Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spark Shell/Scala REPL中没有参数构造函数_Scala_Apache Spark_Read Eval Print Loop - Fatal编程技术网

Spark Shell/Scala REPL中没有参数构造函数

Spark Shell/Scala REPL中没有参数构造函数,scala,apache-spark,read-eval-print-loop,Scala,Apache Spark,Read Eval Print Loop,在spark shell(使用scala repl)中,似乎不可能生成具有默认构造函数(即无参数构造函数)的(case)类: 这使得Jackson无法将某些内容反序列化到此类中,因为没有一种简单的方法可以使用反射构造该类的实例 是否可以在spark shell中使case类具有默认构造函数?复制此代码得到数组[java.lang.reflect.constructor[\u]]=Array(public Hello(),public Hello(int))。您使用哪个scala版本?使用scal

在spark shell(使用scala repl)中,似乎不可能生成具有默认构造函数(即无参数构造函数)的(case)类:

这使得Jackson无法将某些内容反序列化到此类中,因为没有一种简单的方法可以使用反射构造该类的实例


是否可以在spark shell中使case类具有默认构造函数?

复制此代码得到数组[java.lang.reflect.constructor[\u]]=Array(public Hello(),public Hello(int))。您使用哪个scala版本?使用scala 2.11.6和scala REPL,结果与Odomontois相同。然而,对于Spark shell,我得到了与您@lyomi相同的结果。但是新的Hello()可以像预期的那样工作:res1:Hello=Hello(0),即使在Spark shell中,我也可以在scala shell中创建零参数构造函数,但在Spark shell中,在2.10和2.11中都没有运气
Hello()
应该可以工作,因为从语法上讲,shell位于类
$iw
的一个实例中,该类似乎是由repl生成的,而
Hello
是该类的一个内部类。您能包含两个列表吗?一个在Scala外壳中显示“好”行为,另一个在Spark外壳中显示“坏”行为?我发现
newhello()
在这两种环境中都能工作,而
Hello()
在这两种环境中都不能工作。(我想这也是奥多蒙托斯和比约恩发现的。)@DanielDarabos供您参考,您不能执行
Hello()
,因为编译器没有向伴随对象添加相应的
apply()
方法,这与REPL无关,只是您不知道它
scala> case class Hello(i: Int) {
      |   def this() = this(0)
      | }
defined class Hello

scala> classOf[Hello].getName
res1: String = Hello

scala> classOf[Hello].getConstructors()
res2: Array[java.lang.reflect.Constructor[_]] = Array(public Hello($iw), public Hello($iw,int))