mahout randomforest写dataset出现乱码

ramontop1 2014-12-09 03:45:15
是这样。
build random forest的时候,使用的InMemBuilder需要一个Dataset Path传入:
InMemBuilder(TreeBuilder treeBuilder, org.apache.hadoop.fs.Path dataPath, org.apache.hadoop.fs.Path datasetPath)


参考:http://stackoverflow.com/questions/24744831/apache-mahout-how-to-save-a-dataset-object-to-hdfs
的回复,把生成的Dataset使用json保存:
DataInfo = new DataSet(attrs, values, nb, regression);
DFUtils.storeWritable(CONF, InfoPath, new Text(DataInfo.toJSON()));

但是保存在hdfs上面的的Dataset由乱码开头:


所以程序报多个错误:
14/12/09 15:12:04 INFO mapreduce.Job: Task Id : attempt_1418092978489_0003_m_000001_1, Status : FAILED
Error: java.lang.RuntimeException: org.codehaus.jackson.JsonParseException: Unexpected character (' ' (code 65533 / 0xfffd)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
at [Source: java.io.StringReader@150ff8e3; line: 1, column: 2]
at org.apache.mahout.classifier.df.data.Dataset.fromJSON(Dataset.java:375)
at org.apache.mahout.classifier.df.data.Dataset.load(Dataset.java:330)
at org.apache.mahout.classifier.df.mapreduce.Builder.loadDataset(Builder.java:224)
at org.apache.mahout.classifier.df.mapreduce.MapredMapper.setup(MapredMapper.java:61)
at org.apache.mahout.classifier.df.mapreduce.inmem.InMemMapper.setup(InMemMapper.java:64)
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:142)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:763)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:339)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:162)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1491)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:157)


如果手动去除掉前面的乱码,然后运行正常。
环境: ubuntu 14.04, hadoop-2.2.0

各位有何高见?或者有木有别的存Dataset的方式?
...全文
420 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ramontop1 2014-12-22
  • 打赏
  • 举报
回复
直接在浏览器里面看到的,日志都是命令行
skyWalker_ONLY 2014-12-15
  • 打赏
  • 举报
回复
是用什么软件打开的,有可能跟软件设置的编码有关系
ramontop1 2014-12-15
  • 打赏
  • 举报
回复
自己回答吧~ 当时晕掉了,其实是不知道怎么存取dataset。既然dataset转换成json,并且可以被读取,那就用FSDataOutputstream的write(byte[] b)写就是了。当然,还是不知道那个为什么有乱码。

20,807

社区成员

发帖
与我相关
我的任务
社区描述
Hadoop生态大数据交流社区,致力于有Hadoop,hive,Spark,Hbase,Flink,ClickHouse,Kafka,数据仓库,大数据集群运维技术分享和交流等。致力于收集优质的博客
社区管理员
  • 分布式计算/Hadoop社区
  • 涤生大数据
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧