我有一大堆行,其中包含非唯一ID和功能向量。我需要聚合每个ID的所有功能,并使用所有这些功能为每个ID生成决策树。
我尝试过使用RDD或数据帧的各种解决方法,但我总是走到尽头。只要我知道,不允许嵌套RDD,所以我无法获得必要的RDD [LabeledPoint]来训练地图函数中的树。
具有类似
的结构idFeatures: RDD[(String, Iterable[LabeledPoint])]
我想做的是与此类似的东西(因为嵌套RDD而返回NullPointerException):
val trees = idFeatures.groupByKey().mapValues(features => {
DecisionTree.trainRegressor(sc.parallelize(features.to[Seq]), Map[Int, Int](), impurity, maxDepth, maxBins)
});
有没有办法在不重复遍历不同id的集合的情况下逐个生成树(不是根据id集的大小选择)?
答案 0 :(得分:0)
使用RDD。 treeAggregate
def treeAggregate[U: ClassTag](zeroValue: U)(
seqOp: (U, T) => U,
combOp: (U, U) => U
您可以将trainRegressor放入Sequential Op(第一个参数),然后将Combine Op(第二个参数)中的汇总动作放入