去年夏天,我们有一个实习生用 Java 编写了一个 Apache Mahout 作业,对一些数据执行随机森林分类分析。该作业是使用 Apache Mahout 0.7 创建的。
现在我们已经升级了环境以运行 Apache Mahout 0.9,并且项目不再编译。这是不编译的单行:
DFUtils.storeWritable(conf, datasetPath, dataset)
这一行简直太累了,无法存储 Mahout
Dataset
对象到 HDFS 上。在 Mahout 0.7 中,Dataset
类实现了Hadoop.io.Writable
接口(interface),但在 0.9 版中,Dataset
类只是扩展了 Object
类(class)。由于这一变化,storeWritable()
给出 Dataset
时,方法给我一个错误对象作为参数。在我的项目中,
Dataset
object 表示一个文件,该文件描述了我们的随机森林模型试图分析的数据。如果通过命令行完成,就是这一步:hadoop jar mahout-core-0.9-job.jar org.apache.mahout.classifier.df.tools.Describe -p datasets/adult.data -f datasets/adult.data.info -d N C N C N 5 C 3 N C L
这是此链接中解释的“为数据集生成文件描述符”步骤:
https://mahout.apache.org/users/classification/partial-implementation.html
总之,上面失败的那一行只是试图将描述 rune 件存储到 HDFS 上。有谁知道在 Mahout 0.9 中执行此操作的正确方法?
任何建议将不胜感激!
最佳答案
您当然可以将其保存为 JSON。
Text datasetText = new Text(dataset.toJson());
DFUtils.storeWritable(conf, datasetPath, datasetText)
您可以使用
fromJson
进行反序列化方法。
关于Apache Mahout - 如何将数据集对象保存到 HDFS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24744831/