【发布时间】:2015-09-01 05:04:21
【问题描述】:
我有大约 70 列的 RDD。它存储为 tsv。以下是我使用 Python 阅读它的方式:
txtFiles = sc.textFile("temp/txtFiles/*") \
.map(lambda x: x.split("\t"))
这会读入文件,然后沿选项卡拆分为 70 列。理想情况下,我的代码的下一部分应该是这样的:
asDouble = txtFiles.map(lambda y: MISSING VALUE if len(x) == 0 \
else float(x) for x in y)
截至目前,我无法做到这一点。如果我想创建一个保留缺失值的 RDD,它必须是“Any”类型的数组,并且它将 NA 保存为字符串,将数值保存为双精度值。
这是我的问题的症结所在:我想将每一行转换为 LabeledPoint 对象,如下所示:
lblPt = asDouble.map(lambda x: LabeledPoint(x[70], x[0:69]))
但是,由于我在 asDouble 中的数据实际上是“Any”类型,因此我无法将其转换为一组 LabeledPoints。 LabeledPoint 对象只需要双精度。
有没有办法对 RDD 中的缺失值进行编码,以便 RDD 可用于各种机器学习问题,例如决策树、朴素贝叶斯等?
【问题讨论】:
标签: python null apache-spark rdd