我在数据块上使用 'var df...' 时出现 'invalid syntax' 错误(尝试更改列数据类型)

I get 'invalid syntax' error using 'var df...' on databricks (trying to change column data type)

我正在尝试使用下面的代码(在 Databricks 笔记本中)将列的类型从字符串更改为日期时间。

import org.apache.spark.sql.functions._
val df\ = df.withColumn("end",col("end").cast(DateType))
    df\.printSchema()

或者像那样:

df.createOrReplaceTempView("CastExample")
val df4 = spark.sql("DATE(end) from CastExample")
df4.printSchema()
df4.show(false)

但是我得到这个错误:

SyntaxError: invalid syntax
  File "<command-1642181972810133>", line 2
    val df4 = spark.sql("DATE(end) from CastExample")
        ^
SyntaxError: invalid syntax

"val"

好像是'immutable reference'之类的意思,但是我在网上找不到任何相关信息。有很多使用它的代码示例,但没有人提到它为什么在那里。或者我正在以错误的方式搜索它。好像来自 Scala,但我不知道...也许我没有导入任何东西。

如有任何建议,我将不胜感激。

你不应该使用 'val' 因为那是 Scala 语法,如果你想要 df4 中 df 的所有列,使用 *.

df.createOrReplaceTempView("CastExample")
df4 = spark.sql("SELECT *, DATE(end) as new_name from CastExample")
df4.printSchema()
df4.show(10,False)

您也可以使用 PySpark 来实现同样的目的。

df4=df.select(to_date(df.end).alias('new_name'))
df4.show(10,False)