Java Spark.VectorAssembler не принимает String и Null - PullRequest
0 голосов
/ 28 сентября 2018

У меня большой проект со Spark с использованием Java.Я прочитал CSV-файл с более чем 1.000.000 строк и один столбец является строкой.

Когда я пытаюсь сделать VectorAssembler для использования алгоритма ML, у меня появляется ошибка, потому что столбец "Луна" является строкой.

Так что я пытаюсь преобразовать эту строку в целое число с помощью этого:

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

Но когда я делаю это, я получаю нулевое значение в этом столбце.

Такя пытаюсь выполнить na.fill () с помощью Java:

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

Но я не использую well fill ().

Некоторые рекомендации по устранению этой проблемы или другие способы?

Большое спасибо и всего наилучшего.

1 Ответ

0 голосов
/ 30 сентября 2018

Вы не можете просто преобразовать строку в целое число, если только это не строковое представление числа, например «1234».«Луна» - это не число.

Вам нужно использовать StringIndexer , чтобы создать корреляцию между метками строки и числом.Если вы передадите свой строковый столбец через StringIndexer, он создаст новый целочисленный столбец с тем же значением для каждой строки в исходном столбце.Таким образом, все строки со значением «Луна» будут иметь, например, значение 1 в новом столбце, или все строки, значение «Солнца» будет иметь, например, значение 2 в новом столбце.

Вы можете использовать этот новый целочисленный столбец в вашем VectorAssembler.

...