Spark存储parquet报错:Column: [xxxx], Expected: int, Found: INT64

Spark存储parquet报错:Expected: int, Found: INT64

原因:

hadoop上面有一个文件夹里面存储的dataFrame中的一个列名为a的字段类型为IntegerType
读取mysql中对应的表的时候相同列名a字段的类型是LongType写入parquet的时候类型变为IntegerType看起来没有什么大问题,但是之前的文件夹中的IntegerType是32位的,从mysql中读入的因为是LongType类型的,所以读取的时候变为Interger 64位的。所以报出了上述的错误。

解决方案:

利用cast函数现将Int64位数据的IntegerType转换成StringType,然后再转换成IntegerType 这个时候就会变成默认的Int32
为什么要这样去做,因为IntegerType 64位直接转换成IntegerType 32位的代码,我想不出来咋写,我歇逼了…

最后

之后遇到了except int64 Found int32的问题,这下我就没有找到什么有效的方法了,如果有更好的解决方案,请在下方留言,感激不尽,谢谢!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值