我有一个RDD [LabeledPoint],我想找到标签的最小值和最大值,并且还应用一些转换,例如从所有转换中减去数字5.问题是我尝试了各种方法来获取标签,但没有任何正常工作。
如何只访问标签,只访问RDD的功能?有没有办法让它们作为List [Double]和List [Vector]例如?
我不能去数据帧。
答案 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,无论如何都可以操作它。