/**
* 問題:
* 在對數據進行訓練時,Rating要求的是int,int,double,但是現有的數據是long,string,double類
型,使用toInt進行轉換時依然會報錯,這是因爲long類型轉換成int類型已經超出了int的最大值。
*
* 解決思路:
* 創建兩張映射表,將long類型的字段映射成int類型(使用row_number()添加自增序列),然後拿映射的
* 字段進行訓練,訓練完成後,再將映射的字段轉換成原有字段,而後進行推薦。
*
*/
//創建userid_mapping映射表
insert overwrite table userId_mapping
select
user_id,
ROW_NUMBER() OVER(order by user_id) user_id_mapping
from
(select distinct user_id from user_browse_cation) t
//創建newsNumber_mapping映射表
insert overwrite table newsNumber_mapping
select
news_number,
ROW_NUMBER() OVER(order by user_id) news_number_mapping
from
(select distinct news_number from user_browse_cation) t
總結:整體的思路就是做一個映射表,將輸入到ALS的數據提前轉換爲int類型的數據,之後進行預測,預測後的數據在轉換回原來的數據內容即可。
參考:
https://blog.csdn.net/lukabruce/article/details/84816981
https://blog.csdn.net/csmnjk/article/details/78893900
https://blog.csdn.net/zhanghytc/article/details/7456930