我正在使用数据集训练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" );
堆栈跟踪如下:
我该如何解决这个问题?任何帮助表示赞赏。
答案 0 :(得分:3)
将Hadoop版本设置为2.7.2解决了这个问题。
正如here中对SO问题的回答所解释的那样,由于Hadoop和Guava版本不匹配而发生错误。对于17.0以上的Guava版本,必须使用Hadoop 2.7.2。