3
是否有一种快速方法从包含LabeledPoints的现有RDD创建新的RDD,但仅修改每行的标签?PySpark:从现有的LabeledPointsRDD创建新的RDD,但修改标签
作为一个例子,假设我有RDD称为myRDD,并且myRDD具有LabeledPoints如下:
RDD = sc.parallelize([
LabeledPoint(1, [1.0, 2.0, 3.0]),
LabeledPoint(2, [3.0, 4.0, 5.0]),
LabeledPoint(4, [6.0, 7.0, 8.0])])
这代表RDD的取(5)。
我想简单地从这个创建一个新的RDD,但我想从每个标签中减去10。
当我尝试这一点,悲惨的失败了:
myRDD = RDD.map(lambda x: x[0].label - 10, x[1].features)
请通过也指出了什么是错的我在上面尝试推理帮助我。
谢谢先生!为了我的理智 - 为什么我必须重新创建LabeledPoint - RDD已经创建,每行都是LabeledPoint,因此我认为我可以更改标签值并保持RDD的“标记目标”?这是否仅仅是事实,我应用某种形式的操作通过地图,这需要明确的重新标记点? – Monty
几乎每个你在Spark中使用的数据结构都是不可变的。即使它不是匿名函数,也不是一个改变状态的正确位置,特别是如果你必须使用语句。 – zero323