簡體   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