我使用功能kdtree从Double值序列构建kdtree。 我的输出的类型为Option [kdtree.KDNode [T]]。例如,给定以下顺序:
val pointsArray=Seq((0.076994867,0.298298413),(0.086327576,0.300527564), (0.069019641,0.333370483),(0.119755652,0.298447022),(0.1261188, 0.29859563),(0.072243671,0.346745435),(0.131633643,0.29993313),(0.074958637,0.378102246))
kd-tree的构建如下:
KDNode(List(0.086327576, 0.300527564),Some(KDNode(List(0.072243671, 0.346745435),Some(KDNode(List(0.076994867, 0.298298413),Some(KDNode(List(0.069019641, 0.333370483),None,None,1)),None,0)),Some(KDNode(List(0.074958637, 0.378102246),None,None,0)),1)),Some(KDNode(List(0.1261188, 0.29859563),Some(KDNode(List(0.119755652, 0.298447022),None,None,0)),Some(KDNode(List(0.131633643, 0.29993313),None,None,0)),1)),0)
我想将此输出存储为RDD并将其在Spark中的不同节点上划分。但是,当我尝试通过调用sc.parallelize(tree)对其进行并行化时,出现以下错误:类型不匹配,预期:Seq [NotInferedT],实际:Option [kdtree.KDNode [T]]。
如何定义kdtree结构以便可以在Spark中使用?谢谢。