在火花簇scala中保存随机森林模型时出错
Posted
技术标签:
【中文标题】在火花簇scala中保存随机森林模型时出错【英文标题】:Error while saving Random Forest Model in spark cluster scala 【发布时间】:2016-07-23 04:53:18 【问题描述】:我在将随机森林模型保存到磁盘时收到以下 error
。
火花集群配置-
火花包-spark-1.6.0-bin-hadoop2.6
模式 - 独立
我通过在每台从机中复制相同的数据来运行 spark
command - localModel.save(SlapSparkContext.get(), path)
模型已经过训练,可以正确预测测试数据
error trace
java.lang.NullPointerException 在 org.apache.parquet.hadoop.ParquetFileWriter.mergeFooters(ParquetFileWriter.java:456) 在 org.apache.parquet.hadoop.ParquetFileWriter.writeMetadataFile(ParquetFileWriter.java:420) 在 org.apache.parquet.hadoop.ParquetOutputCommitter.writeMetaDataFile(ParquetOutputCommitter.java:58) 在 org.apache.parquet.hadoop.ParquetOutputCommitter.commitJob(ParquetOutputCommitter.java:48) 在 org.apache.spark.sql.execution.datasources.BaseWriterContainer.commitJob(WriterContainer.scala:230) 在 org.apache.spark.sql.execution.datasources.InsertIntoHadoopFsRelation$$anonfun$run$1.apply$mcV$sp(InsertIntoHadoopFsRelation.scala:151) 在 org.apache.spark.sql.execution.datasources.InsertIntoHadoopFsRelation$$anonfun$run$1.apply(InsertIntoHadoopFsRelation.scala:108) 在 org.apache.spark.sql.execution.datasources.InsertIntoHadoopFsRelation$$anonfun$run$1.apply(InsertIntoHadoopFsRelation.scala:108) 在 org.apache.spark.sql.execution.SQLExecution$.withNewExecutionId(SQLExecution.scala:56) 在 org.apache.spark.sql.execution.datasources.InsertIntoHadoopFsRelation.run(InsertIntoHadoopFsRelation.scala:108) 在 org.apache.spark.sql.execution.ExecutedCommand.sideEffectResult$lzycompute(commands.scala:58) 在 org.apache.spark.sql.execution.ExecutedCommand.sideEffectResult(commands.scala:56) 在 org.apache.spark.sql.execution.ExecutedCommand.doExecute(commands.scala:70) 在 org.apache.spark.sql.execution.SparkPlan$$anonfun$execute$5.apply(SparkPlan.scala:132) 在 org.apache.spark.sql.execution.SparkPlan$$anonfun$execute$5.apply(SparkPlan.scala:130) 在 org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:150) 在 org.apache.spark.sql.execution.SparkPlan.execute(SparkPlan.scala:130) 在 org.apache.spark.sql.execution.QueryExecution.toRdd$lzycompute(QueryExecution.scala:55) 在 org.apache.spark.sql.execution.QueryExecution.toRdd(QueryExecution.scala:55) 在 org.apache.spark.sql.execution.datasources.ResolvedDataSource$.apply(ResolvedDataSource.scala:256) 在 org.apache.spark.sql.DataFrameWriter.save(DataFrameWriter.scala:148) 在 org.apache.spark.sql.DataFrameWriter.save(DataFrameWriter.scala:139) 在 org.apache.spark.sql.DataFrameWriter.parquet(DataFrameWriter.scala:329) 在 org.apache.spark.mllib.tree.model.TreeEnsembleModel$SaveLoadV1_0$.save(treeEnsembleModels.scala:453) 在 org.apache.spark.mllib.tree.model.RandomForestModel.save(treeEnsembleModels.scala:65)
【问题讨论】:
如果将 localModel.save(...) 替换为 localModel.count 会出现同样的错误吗? eliasah - 我无法找到任何方法名称计数。我正在使用 spark-mllib_2.10 -version 1.6 然后在运行算法之前对您的供稿数据执行 RF 算法计数 它正在返回正确的 RDD 计数,它不会引发任何错误。 【参考方案1】:当您尝试保存 Empty DataFrame 时出现错误。检查这行代码之前的步骤是否正在过滤/减少您的记录。
【讨论】:
以上是关于在火花簇scala中保存随机森林模型时出错的主要内容,如果未能解决你的问题,请参考以下文章