Spark ML Word2Vec序列化问题

时间:2016-06-09 10:24:19

标签: apache-spark apache-spark-mllib apache-spark-ml

Spark版本:1.6.1

我最近重构了我们的Word2Vec代码以转移到基于DataFrame的ml模型,但我在本地序列化和加载模型时遇到了问题。

我能够成功:

  1. 调整数据框并创建模型。
  2. 检索同义词。
  3. 当我尝试在本地序列化模型时,向量不是序列化的,因此对于10GB的数据,文件的大小太小了大约2K。

            FileOutputStream fo = new FileOutputStream("/tmp/word2vec");
            ObjectOutputStream so = new ObjectOutputStream(fo);
            so.writeObject(word2VecModel);
            so.flush();
            so.close();
            logger.info("Word2Vec model saved");
    

    加载模型并调用findSynonyms()函数会产生以下异常:

      

    显示java.lang.NullPointerException       at org.apache.spark.ml.feature.Word2VecModel.transform(Word2Vec.scala:224)

    有没有办法在本地保存模型?

1 个答案:

答案 0 :(得分:0)

您是否尝试使用现已包含在内的Model Persistence functionality?你可以保存单独的模型,整个管道等。我曾经尝试过这个并且有效。