【发布时间】:2016-12-12 21:56:57
【问题描述】:
我正在关注关于 LDA 示例的 this 教程视频,但遇到以下问题:
<console>:37: error: overloaded method value run with alternatives:
(documents: org.apache.spark.api.java.JavaPairRDD[java.lang.Long,org.apache.spark.mllib.linalg.Vector])org.apache.spark.mllib.clustering.LDAModel <and>
(documents: org.apache.spark.rdd.RDD[(scala.Long, org.apache.spark.mllib.linalg.Vector)])org.apache.spark.mllib.clustering.LDAModel
cannot be applied to (org.apache.spark.sql.Dataset[(scala.Long, org.apache.spark.mllib.linalg.Vector)])
val model = run(lda_countVector)
^
所以我想将此 DF 转换为 RDD,但它总是为我分配为 DataSet。有人可以看看这个问题吗?
// Convert DF to RDD
import org.apache.spark.mllib.linalg.Vector
val lda_countVector = countVectors.map { case Row(id: Long, countVector: Vector) => (id, countVector) }
// import org.apache.spark.mllib.linalg.Vector
// lda_countVector: org.apache.spark.sql.Dataset[(Long, org.apache.spark.mllib.linalg.Vector)] = [_1: bigint, _2: vector]
【问题讨论】:
-
你能给我们countVectors的类型吗?
-
countVectors.printSchema root |-- id: long (nullable = false) |-- features: vector (nullable = true)
-
这不是类型而是架构。
-
哦,那是一个数据框 - countVectors: org.apache.spark.sql.DataFrame = [id: bigint, features: vector]
标签: scala apache-spark apache-spark-mllib