如何使用Spark检索保存的ALS模型 - Java

时间:2016-12-14 04:35:44

标签: java apache-spark

我正在使用数据集训练ALS模型。我正在尝试保存此模型,然后检索它并使用它来获取预测。我可以保存模型,但在尝试检索时会收到错误IllegalAccessError: tried to access method com.google.common.base.Stopwatch.<init>()V from class org.apache.hadoop.mapred.FileInputFormat

我的代码如下:

    MatrixFactorizationModel model;
    MatrixFactorizationModel sameModel;

    int rank = 10;
    int numIterations = 10;
    model = ALS.train( JavaRDD.toRDD( ratings ), rank, numIterations, 0.01 );
    model.save( sc.sc(), "src/main/resources/UserBasedModel" );
    sameModel = MatrixFactorizationModel.load( sc.sc(), "src/main/resources/UserBasedModel" );

堆栈跟踪如下:

stack trace

我该如何解决这个问题?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:3)

将Hadoop版本设置为2.7.2解决了这个问题。

正如here中对SO问题的回答所解释的那样,由于Hadoop和Guava版本不匹配而发生错误。对于17.0以上的Guava版本,必须使用Hadoop 2.7.2。