Apache Mahout - 如何将数据集对象保存到 HDFS?

标签 apache hadoop hdfs mahout random-forest

去年夏天,我们有一个实习生用 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/

相关文章:

apache - 504网关超时

java - 在java程序中编译错误以使用hadoop计算文件中的单词

java - 如何使用 maprfs Java API 执行递归 ls?

Spring 安全性与 Apache Shiro

java - Apache cxf 服务器异步请求处理

hadoop - hive ip geocoding(交叉连接半大表)

hadoop - 如何在 Spark 上运行 Mahout

python - 使用python在HDFS中创建文件

hadoop - Sqoop 导入将 TINYINT 转换为 BOOLEAN

php - 并发使用持久化 PHP 套接字