在Spark编程进行指标清洗时出现cannot resolve ‘`consumptionavg`‘ given input columns报错

在Spark编程进行指标清洗时出现cannot resolve ‘consumptionavg’ given input columns报错

问题背景:

  • 进行数据分析计算练习中的指标计算过程中,通过已有的两条数据计算平均值consumptionavg,将计算出来的平均值consumptionavg保留两位小数

报错现象:

报错如图,通过阅读报错信息得知问题是无法解析给定的列:consumptionavg

ps:开始由于对报错信息阅读能力不足,将上一行信息Truncated the string representation of a plan since it was too large. 错认为报错信息,在程序的spark配置中添加config(“spark.debug.maxToStringFields”, “100”)后未能解决问题。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ug4Dk8lZ-1687770681651)(C:\Users\吴钩\AppData\Roaming\marktext\images\2023-06-25-02-20-00-image.png)]

后面认为是保留两位小数的语法不够正确,导致出现错误,通过百度查询了两条保留两位小数的语法,借鉴使用后依然报错。

df = df.selectExpr("round(money,2) as money" ,"created_ts","updated_ts");
df = df.selectExpr("cast(money as decimal(20,2)) as money" ,"created_ts","updated_ts");
 

原文链接:博客

实际的问题原因:

通过查看spark官方文档,得知出现无法解析给定列的可能原因有以下几种:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mzcaahEq-1687770681652)(C:\Users\吴钩\AppData\Roaming\marktext\images\2023-06-25-02-31-46-image.png)]

检查代码发现问题出在前一列的withcolumn函数中,定义consumptionavg列时多了一列括号,导致实际添加的列名是(consumptionavg)而不是consumptionavg,删除括号后问题解决。

反思:

  • 这次的错误不属于技术性错误,而是语法性错误,主要责任在我对spark编程的语法不够熟练,对withcolumn函数和select函数的使用方式不够掌握

  • 在阅读报错信息方面不够熟练,错把错误包信息认为了错误原因。
    lect函数的使用方式不够掌握

  • 在阅读报错信息方面不够熟练,错把错误包信息认为了错误原因。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值