构建数据模型时Mahout中的NumberFormatException

时间:2013-07-11 07:53:58

标签: hadoop mahout numberformatexception

当我在Mahout中的itemBasedRecommender的训练数据中使用字符串值属性时,我得到一个NumberFormatException,它在从文件中的数据构建FileDataModel期间抛出。如果字符串属性值是“1.0”,它基本上是一个表示为字符串的数字,那么它不会抛出NumberFormatException。但是如果属性值是“Washington”,则抛出NumberFormatException。 是否有任何解决方案可以在Mahout中为推荐人的训练数据中传递像“Washington”这样的字符串属性值作为itemID / userID? 我使用的是Java 1.6SE,Mahout 0.7和Hadoop 1.2。

2 个答案:

答案 0 :(得分:1)

Mahout推荐人并不真正使用Strings,通常你会使用长数字。在将数据传递给推荐者之前,您必须将每个用户和每个项目映射到一个唯一的数字,然后在推荐者之后,您必须将地图映射回原始数据。

有一种解决方法可以使用IDMigrator类,但是如果我没记错的话,在分布式版本中不支持这种情况,只有内存实现。

另一个问题的回答也可能对您有所帮助(link

答案 1 :(得分:1)

我使用Long和Float数据类型取得了成功。字符串不是Java等强类型语言中的数字。在某些数据模型中,有适合Mahout数据类型的转换函数,或者您也可以使用String.toLong()或asLong()值来传递所需的值