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

标签 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

我该如何解决这个问题?感谢您的帮助。

最佳答案

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

here 中 SO 问题的答案中所述该错误是由于 Hadoop 和 Guava 版本不匹配导致的。 Guava 17.0以上版本,必须使用Hadoop 2.7.2。

关于java - 如何使用 Spark - Java 检索保存的 ALS 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41134929/

相关文章:

java - 鼠标单击后如何在 JTextArea 中继续自动滚动?

java - 无法使用 wagon maven FTPS 传输中型大文件

java - 监听/处理 JPanel 事件

hadoop - Spark 上的 Apache pig

hadoop - 如何从容器内部获取 YARN ContainerId?

java - Ehcache搭配tomcat简单例子

Javafx 为滑道和梯子创建玩家和组件

java - Apache Spark,Java 中使用 List<?> 作为第一个参数的 createDataFrame 示例

apache-spark - 在spark中获取嵌套的json对象

apache-spark - Spark 数据集连接性能