记一次Spark MlLib中ASL算法的参数接受问题

在Spark MlLib中的ASL 交替最小二乘法推荐模型,接收的参数为

userID:Int

itemID:Int

评分:Int

那么产生了两个问题:

1. 生产数据的用户id和itemID可能是字符串

2. 最大值问题

首先说第一个问题,如果是字符串,需要重新定义整形的ID,重新定义ID的方式有两种

RDD:data.map(_.uid).distinct().zipWithIndex().map(l=>(l._1,l._2.toInt)).toDF("uid","user")

DataFarem:df.select("item").distinct().withColumn("itemid",monotonicallyIncreasingId)

目前只能用第一种方式,第二种方式会生成Bigint而超出模型的接受范围。

然后第二个问题:

如果限制了类型,传入的最大值为int的最大值 2147483647(在32位操作系统中,由于是二进制,其能最大存储的数据是1111111111111111111111111111111即31个1。正因为此,体现在可视系统中的十进制应该为2147483647)

PS:21亿的item或者user的数量,应当能支撑一般业务了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值