Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.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
Scala中的相同类型不匹配_Scala_Apache Spark_Rdd - Fatal编程技术网

Scala中的相同类型不匹配

Scala中的相同类型不匹配,scala,apache-spark,rdd,Scala,Apache Spark,Rdd,下面的代码片段来自rdd是rdd[(字符串,向量)],但不幸的是,我的Scala编译器抱怨错误类型不匹配,预期:rdd[(字符串,向量)],实际:rdd[(字符串,向量)]我调用flagVectorOutlier(rdd,predictedRDD) 考虑到实际类型和预期类型相同,这里的错误点是什么?我怎样才能解决这个问题?我以前遇到过这种错误。 它发生在我使用java库时,该库将使用java.util.List,而我自己的代码使用的是scala.collection.immutable.List

下面的代码片段来自
rdd
rdd[(字符串,向量)]
,但不幸的是,我的Scala编译器抱怨错误
类型不匹配,预期:rdd[(字符串,向量)],实际:rdd[(字符串,向量)]
我调用
flagVectorOutlier(rdd,predictedRDD)


考虑到实际类型和预期类型相同,这里的错误点是什么?我怎样才能解决这个问题?

我以前遇到过这种错误。 它发生在我使用java库时,该库将使用
java.util.List
,而我自己的代码使用的是
scala.collection.immutable.List
,我把它们混在了一起

您可以轻松地让两个同名的类在代码中共存,但错误消息不会显示完全限定的名称,因此我会得到
类型不匹配,预期为:List[Integer],实际为:List[Integer]
,这似乎令人费解。解决方案只是完全限定输入参数的类型,或者使用typedef来区分它们


另外,我在元组方面也遇到了类似的问题。例如,当方法可以期望元组或直接参数时:

def(param:(Integer,String))
def(param1:Integer,param2:String)


当使用错误的参数(例如,2个参数而不是一个元组)调用该方法时,在粗略检查时,错误消息似乎显示两种相同的类型。如果有多个嵌套元组(因此括号太多但类型相同),则情况会更糟.

你的导入是什么样子的?@LionelPort我正在使用这些导入:
导入org.apache.spark.SparkConf
导入org.apache.spark.rdd.rdd
导入org.apache.spark.streaming.导入org.apache.spark.streaming.StreamingContext导入org.apache.spark.mllib.linalg.Vectors
导入org.apache.spark.mllib.clustering.StreamingKMeans
如果将该类型说明符添加到foreachRDD(rdd:rdd[(String,Vector)]…?这些是Java字符串和向量类吗?可能您在scala.collection.immutable.Vector和Apache版本上有冲突?尝试在函数def type声明中指定完整的导入名称。很高兴我能提供帮助。搜索“scala重命名导入”如果你不想在ApacheVector类的任何地方都使用完整的导入路径,谢谢!在我的例子中,这实际上是因为我正在学习Martin Odersky()的“Scala函数编程原理”课程和“列表”在以前的课程中定义的类已经覆盖了内置的
scala.collection.immutable.List。再次感谢!
def someFunction() {

  testData.foreachRDD( rdd => {
    val vectorsRDD = rdd.map( pair => pair._2 )

    val predictedRDD = model.latestModel().predict( vectorsRDD )

     flagVectorOutlier( rdd, predictedRDD )
  } )

  ssc.start()
  ssc.awaitTermination()
}

def flagVectorOutlier(testVectors: RDD[(String, Vector)], predicts: RDD[Int]): Unit = {

}