Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 匿名函数的参数类型必须完全已知。(SLS 8.5)当word2vec应用于数据帧时_Scala_Apache Spark_Dataframe_Apache Spark Mllib - Fatal编程技术网

Scala 匿名函数的参数类型必须完全已知。(SLS 8.5)当word2vec应用于数据帧时

Scala 匿名函数的参数类型必须完全已知。(SLS 8.5)当word2vec应用于数据帧时,scala,apache-spark,dataframe,apache-spark-mllib,Scala,Apache Spark,Dataframe,Apache Spark Mllib,我使用数据帧应用Spark的word2vec。这是我的密码: val df2 = df.groupBy("LABEL").agg(collect_list("TERM").alias("TERM")) val word2Vec = new Word2Vec() .setInputCol("TERM") .setOutputCol("result") .setMinCount(0) val model = word2Vec.fit(df2)

我使用数据帧应用Spark的word2vec。这是我的密码:

val df2 = df.groupBy("LABEL").agg(collect_list("TERM").alias("TERM"))

    val word2Vec = new Word2Vec()
      .setInputCol("TERM")
      .setOutputCol("result")
      .setMinCount(0)

val model = word2Vec.fit(df2)
    val result = model.transform(df2)

    val synonyms = model.findSynonyms("4", 10)

    //synonyms.foreach(println)

    for((synonym, cosineSimilarity) <- synonyms) {
      println(s"$synonym $cosineSimilarity")
    }

从其他类似的stackoverflow问题和错误来看,似乎需要确切的参数类型。在for循环中,synonyms是一个数据帧,返回值的类型分别为String和Double。所以我所有的试验都失败了。我该如何补救呢?

FindSynoyms的结果是一个非物化的Spark internal
数据帧。您不能简单地对结果进行迭代

  def findSynonyms(word: Vector, num: Int): DataFrame = {
    ..
    sc.parallelize(wordVectors.findSynonyms(word, num)).toDF("word", "similarity")
  }

注意,
foreach
工作的原因是,这是一种在
DataFrame

上明确定义的物化方法,
findSynonyms
的结果是一个非物化的火花内部
DataFrame
。您不能简单地对结果进行迭代

  def findSynonyms(word: Vector, num: Int): DataFrame = {
    ..
    sc.parallelize(wordVectors.findSynonyms(word, num)).toDF("word", "similarity")
  }
注意,
foreach
工作的原因是它是一种在
DataFrame
上明确定义的物化方法