【发布时间】:2019-12-06 23:51:51
【问题描述】:
我正在使用 Apache Spark 2.1.2,我想使用 Latent Dirichlet allocation (LDA)。
以前我使用org.apache.spark.mllib 包,我可以毫无问题地运行它,但现在开始使用 spark.ml 后,我遇到了错误。
val lda = new LDA().setK(numTopics).setMaxIter(numIterations)
val docs = spark.createDataset(documents)
val ldaModel = lda.fit(docs)
您可能已经注意到,我正在将 documents RDD 转换为数据集对象,但不确定这是否是正确的做法。
在.fit 的最后一行中,我收到以下错误:
java.lang.IllegalArgumentException:字段“features”不存在。
我的docs 数据集如下所示:
scala> docs.take(2)
res28: Array[(Long, org.apache.spark.ml.linalg.Vector)] = Array((0,(7336,[1,2,4,5,12,13,19,24,26,42,48,49,57,59,63,73,81,89,99,106,113,114,141,151,157,160,177,181,198,261,266,267,272,297,307,314,315,359,383,385,410,416,422,468,471,527,564,629,717,744,763,837,890,928,932,951,961,1042,1134,1174,1305,1604,1653,1850,2119,2159,2418,2634,2836,3002,3132,3594,4103,4316,4852,5065,5107,5632,5945,6378,6597,6658],[1.0,1.0,1.0.......
我之前的documents 在将它们转换为数据集之前:
documents: org.apache.spark.rdd.RDD[(Long, org.apache.spark.ml.linalg.Vector)] = MapPartitionsRDD[2520]
如何摆脱上面的错误?
【问题讨论】:
标签: scala apache-spark apache-spark-mllib