繁体   English   中英

在 Scala 数据框中将字符串列转换为十进制

[英]cast string column to decimal in scala dataframe

我有一个数据框 (scala) 我在笔记本中同时使用 pyspark 和 scala

#pyspark
spark.read.csv(output_path + '/dealer', header = True).createOrReplaceTempView('dealer_dl')

%scala
import org.apache.spark.sql.functions._
val df = spark.sql("select * from dealer_dl")

如何在 Scala 数据框中将字符串列(数量)转换为十进制。

我试过如下。

 %scala
 df = df.withColumn("amount", $"amount".cast(DecimalType(9,2)))

但我收到如下错误:

错误:重新分配给 val

我习惯了 pyspark 并且对 Scala 很陌生。 我需要通过 Scala 来做进一步的工作。 请告诉我。 谢谢。

在 scala 中,您不能重新分配定义为val引用,但val是不可变的引用。 如果您想使用重新分配一些引用,您可以使用var但更好的解决方案不是将某些内容重新分配给相同的引用名称并使用另一个val 例如:

val dfWithDecimalAmount = df.withColumn("amount", $"amount".cast(DecimalType(9,2)))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM