sparksqlmax函数,计算出的并不是字段的最⼤值的解决办法
出现的状况:
groupby是什么函数原代码:
val timeDF2 = upBy("userId").agg(max("totalOnlineTime"))
select time.userId as timeUserId, alOnlineTime) as totalTime ,time.platform as platforms from time group by time.userId,time.platform
agg函数的max 求最⼤值的函数,计算出的结果,并不是这个字段的最⼤值,导致计算结果偏低
原因:字段的数据的类型的string,不是数值性的值,因为在⽐较的时候,⽐较的第⼀个字符,9⼤于10
解决办法:字段的类型string 转换成long int double等类型
利⽤的函数:cast
实例:
修改之后的代码
val channelDf = sparkSession.sql("select * from table ").select(col("userId"), col("downloadChannels"), col("totalOnlineTime").cast("Long")).groupBy("userI d", "downloadChannels").agg(org.apache.spark.sql.functions.max("totalOnlineTime") as "time")
sparkSession.sql("select * from tempTimeView ").select(col("userId"), col("tempTimeView.platform"), col("totalOnlineTime").cast("Long")).createOrReplace TempView("time")
解决问题---------------------------------
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论