spark dataframe转化成dataset错误

木木木yanyanyan 发布于 2018/06/14 18:25
阅读 583
收藏 1

这里我定义了类
class AbnormalSim2(Cust_Id:String,Trx_Dt:String,Cur_Bns_Bal:String){
  @BeanProperty var Cust_Id1:String = _
  @BeanProperty var Trx_Dt1:String = _
  @BeanProperty var Cur_Bns_Bal1:BigDecimal = _
}

然后
import spark.implicits._
implicit val mapEncode1r = org.apache.spark.sql.Encoders.kryo[AbnormalSim2]
abnormal.select("Cust_Id","Trx_Dt","Cur_Bns_Bal").as[AbnormalSim2].show

报一下的的错误

org.apache.spark.sql.AnalysisException: Try to map struct<Cust_Id:string,Trx_Dt:string,Cur_Bns_Bal:int> to Tuple1, but failed as the number of fields does not line up.

但是写成这样的形式
case class AbnormalSim(){
  @BeanProperty var Cust_Id:String = _
  @BeanProperty var Trx_Dt:String = _
  @BeanProperty var Cur_Bns_Bal:BigDecimal = _
}

import spark.implicits._
abnormal.select("Cust_Id","Trx_Dt","Cur_Bns_Bal").as[AbnormalSim].show
是成功的,

我这里的问题是,dataframe转换成dataset的as[T],这个T一定要写成case的形式吗?其他不行。我把AbnormalSim2 继承序列化,也是不行的。

所以还是这个问题,dataframe转换成dataset的as[T],这个T一定要写成case class的形式吗?

加载中
返回顶部
顶部