下面是我的数据集。
user,device,time_spent,video_start
userA,mob,5,1
userA,desk,5,2
userA,desk,5,3
userA,mob,5,2
userA,mob,5,2
userB,desk,5,2
userB,mob,5,2
userB,mob,5,2
userB,desk,5,2
我想找出每个用户的以下聚合。
user total_time_spent device_distribution
userA 20 {mob:60%,desk:40%}
userB 20 {mob:50%,desk:50%}
有人可以帮助我最好在 Java 中使用 spark 2.0 API 来实现这一点。我曾尝试使用 UserDefinedAggregateFunction,但它不支持组内组,因为我必须按设备对每个用户组进行分组,以查找在每个设备上花费的汇总时间。