[error handle][mahout] 由于空字符串错误导致model创建失败

REASON

图书馆项目,今天想测试下mahout的图书推荐算法。

借阅数据有30多万条,用kettle处理过后是这样

long,long,flout型,用逗号隔开,符合要求。


ERROR

运行后报错,model = new FileDataModel(new File(INPUTPATH));   语句错误,提示空字符串错误。

错误信息:

Exception in thread "main" java.lang.NumberFormatException: For input string: ""

at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Long.parseLong(Unknown Source)
at java.lang.Long.parseLong(Unknown Source)
at org.apache.mahout.cf.taste.impl.model.file.FileDataModel.readUserIDFromString(FileDataModel.java:638)
at org.apache.mahout.cf.taste.impl.model.file.FileDataModel.processLine(FileDataModel.java:412)
at org.apache.mahout.cf.taste.impl.model.file.FileDataModel.processFile(FileDataModel.java:363)
at org.apache.mahout.cf.taste.impl.model.file.FileDataModel.buildModel(FileDataModel.java:259)
at org.apache.mahout.cf.taste.impl.model.file.FileDataModel.reload(FileDataModel.java:231)
at org.apache.mahout.cf.taste.impl.model.file.FileDataModel.<init>(FileDataModel.java:221)
at org.apache.mahout.cf.taste.impl.model.file.FileDataModel.<init>(FileDataModel.java:169)
at org.apache.mahout.cf.taste.impl.model.file.FileDataModel.<init>(FileDataModel.java:149)
at action.recommend.Commender.ItemBasedRecommend(Commender.java:68)

at action.recommend.Commender.main(Commender.java:30)


FIND

debug发现[error handle][mahout] 由于空字符串错误导致model创建失败_第1张图片


果然有一行用户id为空,其紧跟的图书id不为空。

打开数据文件,ctrl+F,查找读书id,450976834041

锁定位置,果然有几行的第一个数据缺失了。


HANDLE

在kettle的transform新加一个组件,过滤掉空记录,当然也可以设置条件替换为一个固定值。毕竟是Test,先跑起来吧。[error handle][mahout] 由于空字符串错误导致model创建失败_第2张图片

你可能感兴趣的:(Mahout)