spark.read.json对schema的排序

无意中遇到了一个问题,公司项目跑关于spark的任务,任务中间没报错,但测试的数据最终没结果输出,所以就一步一步排查问题,最后发现是spark.read.json读取json数据时把原始数据的schema顺序改变了,才导致最终没输出结果。

先粘贴一下原始数据:主要看一下表头字段的顺序
在这里插入图片描述

//之前的代码我就不粘贴了,这里就粘两行对dataFrame初始化
val df = spark.read.json(sparkReadAddress)
df.show()

通过spark.read.json读取后的数据:可以发现,和原始数据对比,虽然数据没变,但表头字段的顺序变了(字段的实际值也在其对应的字段下)
在这里插入图片描述

其实,一般情况下是不会出现问题的,但奈何项目比较特殊,对数据做处理时,是不知道表头的,所以是按schema顺序取的特定的某个值,对数据做交叉处理(比如取的schema的第五个字段进行的join处理);所以最终通过spark.read.json读取后,发现对schema做字典顺序排列了,导致任务最终没结果输出;
且由于项目比较特殊,代码暂时还没办法修改,所以问题暂时没解决,非常恶心。。。如果有人知道怎么不让spark对schema排序,麻烦大佬留个言
参考博客地址

后续解决问题方案:把spark读取json数据,改为读取csv数据了,这样就不会对表头做排序处理了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值