如何解决在Spark SQL中将字符串转换为Int时输入Mismatch
在Spark sql中使用withcolumn从字符串转换为int后,我试图添加两列的值。
withColumn("totalDowntimetime",("zenerTime").cast(int)+("avalancheTime").cast(int)).show(truncate = false)
但是它会抛出错误“
Error:(36,44) type mismatch;
found : String("zenerTime")
required: org.apache.spark.sql.Column
withColumn("totalDowntimetime",("zenerTime").cast(int)+("avalancheTime").cast(int)).show(truncate = false)
非常感谢您的建议
解决方法
尝试使用 zenerTime
avalancheTime
,col(<column_name>)
- 所需类型为
column
withColumn("totalDowntimetime",col("zenerTime").cast(int) + col("avalancheTime").cast(int)).show(truncate = false)
示例:
val df=Seq(("1","2")).toDF("zenerTime","avalancheTime")
import org.apache.spark.sql.functions._
import org.apache.spark.sql.types._
df.withColumn("totalDowntimetime",col("zenerTime").cast("int") + col("avalancheTime").cast("int")).show()
/*
+---------+-------------+-----------------+
|zenerTime|avalancheTime|totalDowntimetime|
+---------+-------------+-----------------+
| 1| 2| 3|
+---------+-------------+-----------------+
*/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。