PySpark Array<double> 不是 Array<double>

Posted

技术标签:

【中文标题】PySpark Array<double> 不是 Array<double>【英文标题】:PySpark Array<double> is not Array<double> 【发布时间】:2019-04-11 18:34:50 【问题描述】:

我正在运行一个非常简单的 Spark(Databricks 上的 2.4.0)ML 脚本:

from pyspark.ml.clustering import LDA

lda = LDA(k=10, maxIter=100).setFeaturesCol('features')
model = lda.fit(dataset)

但收到以下错误:

IllegalArgumentException: 'requirement failed: Column features must be of type equal to one of the following types: [struct<type:tinyint,size:int,indices:array<int>,values:array<double>>, array<double>, array<float>] but was actually of type array<double>.'

为什么我的array&lt;double&gt; 不是array&lt;double&gt;

这是架构:

root
 |-- BagOfWords: struct (nullable = true)
 |    |-- indices: array (nullable = true)
 |    |    |-- element: long (containsNull = true)
 |    |-- size: long (nullable = true)
 |    |-- type: long (nullable = true)
 |    |-- values: array (nullable = true)
 |    |    |-- element: double (containsNull = true)
 |-- tokens: array (nullable = true)
 |    |-- element: string (containsNull = true)
 |-- features: array (nullable = true)
 |    |-- element: double (containsNull = true)

【问题讨论】:

可以把dataset.printSchema()的输出贴出来吗? @cronoik 你去吧 这个 *** 答案为我解决了这个问题:***.com/questions/55162989/… 【参考方案1】:

您可能需要使用向量汇编器将其转换为向量形式 from pyspark.ml.feature import VectorAssembler

【讨论】:

以上是关于PySpark Array<double> 不是 Array<double>的主要内容,如果未能解决你的问题,请参考以下文章

在 pyspark 中比较不同数据框中的两列,分别为 String 和 Array<string> 类型

PySpark:将String类型的DataFrame列转换为Double时出现KeyError

在pyspark中将字符串价格值转换为double类型

在 Pyspark 中旋转时无法解析列名

有没有办法在 pyspark 中获取列数据类型?

Leetcode-954 Array of Doubled Pairs(二倍数对数组)