在RDD [LabeledPoint] Spark / Scala中查找最小,最大标签

时间:2017-03-21 13:32:07

标签: scala apache-spark

我有一个RDD [LabeledPoint],我想找到标签的最小值和最大值,并且还应用一些转换,例如从所有转换中减去数字5.问题是我尝试了各种方法来获取标签,但没有任何正常工作。

如何只访问标签,只访问RDD的功能?有没有办法让它们作为List [Double]和List [Vector]例如?

我不能去数据帧。

2 个答案:

答案 0 :(得分:0)

好的,所以在玩了地图功能后,我想出了这个解决方案

val labels = rdd.map(x=> x.label)
val min = labels.min
val max = labels.max

如果您想更改标签,可以再次使用地图功能

rdd.map(x=> x.label - 5)

通过这种方式,您可以使用RDD [LabeledPoint]的标签部分。

在下面的Cyril评论之后,我决定添加一个命令,让你保留你的RDD并只改变你想要的标签。

val newRdd = rdd.map(x => x.copy(x.label -5))

答案 1 :(得分:0)

您可以使用SparkSession.For DataFrame从现有RDD创建DataFrame,无论如何都可以操作它。