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

本文探讨了在使用Spark处理Parquet文件时遇到的类型不匹配错误:Expected:int,Found:INT64。深入分析了错误原因,即从MySQL读取的数据类型与现有Parquet文件中的类型不符。提供了通过cast函数进行类型转换的解决方案,并讨论了后续可能遇到的exceptint64Foundint32问题。
部署运行你感兴趣的模型镜像

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的问题,这下我就没有找到什么有效的方法了,如果有更好的解决方案,请在下方留言,感激不尽,谢谢!

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值