aditya-grover / node2vec

http://snap.stanford.edu/node2vec/
MIT License
2.61k stars 912 forks source link

Node2Vec-Spark in Scala: Error on Loading Model #58

Closed mcRoot closed 5 years ago

mcRoot commented 5 years ago

Hi,

I am trying to load a model previously created via Spark Node2Vec. My environment is as follows:

Scala: 2.11.12 Spark: 2.4.0

Here is the code I am trying to run:

import org.apache.spark.ml.feature.Word2VecModel
import org.apache.spark.sql.SparkSession

object Main {
  def main(args: Array[String]): Unit = {
    val spark = SparkSession
      .builder()
      .appName("TestApp")
      .master("local[*]")
      .getOrCreate()
    val sameModel = Word2VecModel.load("output/embedding.bin")
  }
}

The folder output/embedding.bin contains the metadata and data folders generating by previous execution of Node2Vec on Spark.

This results in the following exception: Exception in thread "main" org.json4s.package$MappingException: Did not find value which can be converted into java.lang.String at org.json4s.reflect.package$.fail(package.scala:95) at org.json4s.Extraction$.$anonfun$convert$2(Extraction.scala:704) at scala.Option.getOrElse(Option.scala:138) at org.json4s.Extraction$.convert(Extraction.scala:704) at org.json4s.Extraction$.$anonfun$extract$9(Extraction.scala:394) at org.json4s.Extraction$.customOrElse(Extraction.scala:606) at org.json4s.Extraction$.extract(Extraction.scala:392) at org.json4s.Extraction$.extract(Extraction.scala:39) at org.json4s.ExtractableJsonAstNode.extract(ExtractableJsonAstNode.scala:21) at org.apache.spark.ml.util.DefaultParamsReader$.parseMetadata(ReadWrite.scala:632) at org.apache.spark.ml.util.DefaultParamsReader$.loadMetadata(ReadWrite.scala:616) at org.apache.spark.ml.feature.Word2VecModel$Word2VecModelReader.load(Word2Vec.scala:392) at org.apache.spark.ml.feature.Word2VecModel$Word2VecModelReader.load(Word2Vec.scala:384) at org.apache.spark.ml.util.MLReadable.load(ReadWrite.scala:380) at org.apache.spark.ml.util.MLReadable.load$(ReadWrite.scala:380) at org.apache.spark.ml.feature.Word2VecModel$.load(Word2Vec.scala:422) at Main.main(Main.scala)

Best, Matteo

mcRoot commented 5 years ago

Never mind: think I used the wrong import, indeed replacing: import org.apache.spark.ml.feature.Word2VecModel with import org.apache.spark.mllib.feature.Word2VecModel solved my issue.