私はSparkコラボレーティブフィルタリングを使用しておすすめシステムを実装しようとしています。Spark ML- MatrixFactorizationModelを使用してモデルを読み込めません。
まず私がモデルを準備し、ディスクに保存します。私は別のプロセスを使用してモデルをロードすると
MatrixFactorizationModel model = trainModel(inputDataRdd);
model.save(jsc.sc(), "/op/tc/model/");
プログラムは、以下の例外で失敗します
コード:
static JavaSparkContext jsc ;
private static Options options;
static{
SparkConf conf = new SparkConf().setAppName("TC recommender application");
conf.set("spark.driver.allowMultipleContexts", "true");
jsc= new JavaSparkContext(conf);
}
MatrixFactorizationModel model = MatrixFactorizationModel.load(jsc.sc(),
"/op/tc/model/");
例外:
スレッド "main"の例外java.io.IOException:ファイルではありません: maprfs:/ op/tc/model/data at org.apache.hadoop.mapred.FileInputFormat.getSplits(FileInputFormat.java:324) org.apache.spark.rdd.HardopRDD.getPartitions(HadoopRDD.scala:199) at org.apache.spark.rdd.RDD $$ anonfun $ partitions $ 2.apply(RDD.scala:239) at org.apache .spark.rdd.RDD $$ anonfun $ partitions $ 2.apply(RDD.scala:237) at scala.Option.getOrElse(Option.scala:120) at org.apache.spark.rdd.RDD.partitions(RDD .scala:237) at org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:35) at org.apache.spark.rdd.RDD $$ anonfun $ partitions $ 2.apply(RDD.scala:239) ) at org.apache.spark.rdd.RDD $$ anonfun $ partitions $ 2.apply(RDD.scala:237) at scala.Option.getOrElse(Option.scala:120) at org.apache.spark.rdd。 RDD.partitions(RDD.scala:237) at org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:35) at org.apache.spark.rdd.RDD $$ anonfun $ partitions $ 2.apply( RDD.scala:239) at org.apache.spark.rdd.RDD $$ anonfun $ partitions $ 2.apply(RDD.scala:237) at scala.Option.getOrElse(Option.scala:120) at org。 apache.spark.rdd.RDD.partitions(RDD.scala:237) at org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:35) at org.apache.spark.rdd.RDD $$ anonfun $ partitions $ 2.apply(RDD.scala:239) at org.apache.spark.rdd.RDD.RDDのscala.Option.getOrElse(Option.scala:120) の の$ anonfun $ partitions $ 2.apply(RDD.scala:237) パーティション(RDD.scala:237) at org.apache.spark.SparkContext.runJob(SparkContext.scala:1952) at org.apache.spark.rdd.RDD $$ anonfun $ aggregate $ 1.apply(RDD.scala: 1114) at org.apache.spark.rdd.RDDOperationScope $ .withScope(RDDOperationScope.scala:150) at org.apache.spark.rdd.RDDOperationScope $ .withScope(RDDOperationScope.scala:111) at org.apache。 spark.rdd.RDD.withScope(RDD.scala:316) at org.apache.spark.rdd.RDD.aggregate(RDD.scala:1107) at org.apache.spark.mllib.recommendation.MatrixFactorizationModel.countApproxDistinctUserProduct( MatrixFactorizationModel .scala:96) org.apache.spark.mllib.recommendation.MatrixFactorizationModel.predictで(MatrixFactorizationModel.scala:126) com.aexp.cxp.recommendation.ProductRecommendationIndividual.main(ProductRecommendationIndividual.java:62) で太陽にjava.lang.reflectのでsun.reflect.NativeMethodAccessorImpl.invokeで.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド) sun.reflect.DelegatingMethodAccessorImpl.invokeで(NativeMethodAccessorImpl.java:62) (DelegatingMethodAccessorImpl.java:43) 。 Method.invoke(Method.java:497) at org.apache.spark。(SparkSubmit.scala:181) at org.apache.spark.deploy.SparkSubmit $ .doRunMain $ 1(SparkSubmit.scala:181) at org.apache.spark.deploy.SparkSubmit $。 apache.spark.deploy.SparkSubmit $ .submit(SparkSubmit.scala:206) at org.apache.spark.deploy.SparkSubmit $ .main(SparkSubmit.scala:121) at org.apache.spark.deploy.SparkSubmit。メイン(SparkSubmit.scala)
モデルを読み込むために設定する必要がある設定はありますか?どんな提案も大きな助けになるでしょう。
私はそれがかなり明らかだと思います。あなたのファイルは存在しません(少なくとも地図操作をしているので、スレーブ上に存在しません) – Dici
私が保存しているのと同じプロセスでモデルを読み込むと、ファイルが存在しません。それは文句を言いません:( –
サイドノードでは、私は 'allowMultipleContexts'の使用をお勧めしません。私はまだスパークの設定でそれを見たことがない – Dici