如何在 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 问题从来没有提到T
的Vector[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 返回)?