Столбец функций кластеризации Pyspark KMeans IllegalArgumentException - PullRequest
1 голос
/ 14 марта 2019
pyspark==2.4.0

Вот код, дающий исключение:

LDA = spark.read.parquet('./LDA.parquet/')
LDA.printSchema()

from pyspark.ml.clustering import KMeans
from pyspark.ml.evaluation import ClusteringEvaluator

kmeans = KMeans(featuresCol='topic_vector_fix_dim').setK(15).setSeed(1)
model = kmeans.fit(LDA)

root
| - Id: строка (nullable = true)
| - topic_vector_fix_dim: array (nullable =правда)
|| - элемент: double (содержитNull = true)

IllegalArgumentException: 'требование не выполнено: столбец topic_vector_fix_dim должен иметь тип, равный одному из следующих типов: [struct , значения: массив >, массив , массив ], но на самом деле был тип array . '

Я в замешательстве - мне не нравится array <double>, но он говорит, что это может быть вход.
Каждая запись topic_vector_fix_dim является 1d массивом с плавающей точкой

1 Ответ

2 голосов
/ 14 марта 2019

containsNull столбца функций должен быть установлен на False:

new_schema = ArrayType(DoubleType(), containsNull=False)
udf_foo = udf(lambda x:x, new_schema)
LDA = LDA.withColumn("topic_vector_fix_dim",udf_foo("topic_vector_fix_dim"))

После этого все работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...