我如何将火花数据帧转换为RDD并得到一袋字

时间:2016-03-10 17:05:14

标签: apache-spark apache-spark-sql apache-spark-ml

我有一个名为article

的数据框
+--------------------+
|     processed_title|
+--------------------+
|[new, relictual, ...|
|[once, upon,a,time..|
+--------------------+

我想把它弄平,把它当作一堆文字。 我怎么能用当前的情况实现这一点。我已经尝试了下面的代码,这似乎给我一个类型不匹配的问题。

val bow_corpus = article.select("processed_title").rdd.flatMap(y => y)

我最终想用这个bow_corpus训练一个word2vec模型。

由于

1 个答案:

答案 0 :(得分:1)

假设processed_title在SQL中表示为array<string>

article.select("processed_title").rdd.flatMap(_.getSeq[String](0))

还有Word2Vec变换器可以直接在DataFrame上进行训练:

import org.apache.spark.ml.feature.Word2Vec

val word2Vec = new Word2Vec()
  .setInputCol("processed_title")
  .setOutputCol("vectors")
  .setMinCount(0)
  .fit(article)

word2Vec.findSynonyms("foo", 1)

另见Spark extracting values from a Row