首页 > 解决方案 > 如何使用 LabeledPoint 过滤 RDD?

问题描述

我的初始 RDD 看起来像:

RDD_int.collect() = [("a", 0, LabeledPoint(0, f01, f02, ..., f0n)), ("a", 1, LabeledPoint(0, f11, f12, ..., f1n)), ..., ("a", m, LabeledPoint(0, fm1, fm2, ..., fmn))]

我试试这个操作:

RDD.filter(lambda x : "LabeledPoint" in x[2])

它不起作用。

我希望得到这个:

RDD.collect() = [LabeledPoint(0, f01, f02, ..., f0n), LabeledPoint(0, f11, f12, ..., f1n), ..., LabeledPoint(0, fm1, fm2, ..., fmn)]

如何使用 .filter 的 pyspark 做到这一点?谢谢你的帮助。

标签: pythonpyspark

解决方案


RDD.filter用于根据过滤条件从 rdd中删除元素(“行”) 。

您可能希望映射rdd 的每个元素,以便在原始元组中(String, Integer, LabeledPoint)仅保留第三个元素( the LabeledPoint):

rdd = rdd.map(lambda t: t[2])

推荐阅读