如何在 Apache Spark ML API 中从“DataFrame”创建一个“Vector”?

Posted

技术标签:

【中文标题】如何在 Apache Spark ML API 中从“DataFrame”创建一个“Vector”?【英文标题】:How to create a `Vector` from `DataFrame` in Apache Spark ML API? 【发布时间】:2018-04-03 11:01:21 【问题描述】:

如何在 Apache Spark ML API 中从 DataFrame 创建 Vector(import org.apache.spark.mllib.linalg.DenseVector, SparseVector)?

【问题讨论】:

您需要提供更多信息才能获得有用的答案。您的 DataFrame 的形状是什么(是单列还是多列)?如果有多个,你想要每列一个向量吗?你要每行一个吗?由于您使用的是 Spark,我假设您无法将 DataFrame 放入内存中。您希望如何将向量放入内存中?每个节点一个或其他? 您是否介意按照上面评论中的建议更新问题 【参考方案1】:

如果你想要scala.collection.Vector 你可以只收集DataFrame并调用toVector()函数。

val df = Seq(1, 2, 3).toDF
val vector = df.collect().toVector
vector.map(_.getInt(0))

p。 s。请解释为什么会被否决

【讨论】:

我不知道你为什么投了反对票。也许是因为它产生行向量而不是整数向量。很难说,因为这个问题似乎不清楚。 @AndreyTyukin 问题从来没有提到TVector[T] 应该是什么类型。在我看来,这个问题太宽泛了。 确实如此,正如我所说,问题似乎不清楚。但是无论T 是什么类型,您的提案都会返回Vector[Row],而不是Vector[T],这可能是OP 想要的......但是,谁知道OP 想要什么?

以上是关于如何在 Apache Spark ML API 中从“DataFrame”创建一个“Vector”?的主要内容,如果未能解决你的问题,请参考以下文章

值 toDF 不是 org.apache.spark.rdd.RDD[(Long, org.apache.spark.ml.linalg.Vector)] 的成员

如何在 Spark 中获取 spark.ml NaiveBayes 概率向量而不是 [0-1] 类?

列特征必须是 org.apache.spark.ml.linalg.VectorUDT 类型

如何展平结构数组类型的列(由 Spark ML API 返回)?

PySpark 中的 org.apache.spark.ml.feature.Tokenizer NPE

列要素必须是org.apache.spark.ml.linalg.VectorUDT类型