Java Spark.VectorAssembler 不接受 String 和 Null



我有一个使用 Java 的 Spark 大项目。我读取了一个超过 1.000.000 行的 csv 文件,其中一列是字符串。

当我尝试做一个矢量汇编器来使用 ML 算法时,我遇到了一个错误,因为"月亮"列是一个字符串。

所以我试图用这个字符串将这个字符串转换为整数:

Dataset<Row> moons = typedMoons.withColumn("Moon", typedMoons.col("Moon").cast("Integer"));

但是当我这样做时,我会在该列中获得一个 Null 值。

所以我试图用Java来na.fill((:

Dataset<Row> typedMoonsfinal = typedMoons.na().fill("Moon", typedMoons.col("Moon"));

但我没有使用井填充((。

一些建议来解决这个问题或其他方式?

非常感谢和问候。

您不能只将字符串转换为 int,除非它是数字的字符串表示形式,例如"1234"。"月亮"不是一个数字。

您需要做的是使用 StringIndexer 在字符串标签和数字之间创建关联。如果通过 StringIndexer 传递字符串列,它将为原始列中的每个字符串创建一个具有相同值的新整数列。因此,所有具有"Moon"值的行在新列中都将具有值 1,或者"Sun"值的所有行将在新列中具有值 2。

您可以在 VectorAssembler 中使用这个新的整数列。

最新更新