我用Scala写spark从postgresql数据库读出来的数据是这样的
然后我想建立一个透视表,以userid和modelid进行分组,分别统计buy和like的cishu,于是我这样写
val one: DataFrame = xingwei.groupBy("userid", "modelid").pivot("xingwei",Seq("buy","like")).sum("cishu")
one.show()
然后呢,数据丢失,就是找不到,我怎么也理解不了,网上也没有说,我不断查找不断试验,最终发现了一个大坑,Scala spark读取postgresql数据的char类型时会把空格也读进来,所以就找不到“buy”和“like”,找到的是“buy ”和“like ”,所以想建立透视表,我们需要把空格也加上,然后再换dataframe表头才行
val one: DataFrame = xingwei.groupBy("userid", "modelid").pivot("xingwei",Seq("buy ","like ")).sum("cishu")
one.show()
val two: DataFrame = one.withColumnRenamed("buy ", "buy").withColumnRenamed("like ", "like")
two.show()