如何引用/选择当前dataFrame中的列

问题描述 投票:0回答:1

我正在尝试通过其名称引用dataFrame中的列,在spark shell中,我可以使用$,这在编译代码时是未知的。这是一个例子:

val df:DataFrame= Seq(
   ("Alex", "04/01/1992"),
   ("Sarah","01/01/2000"),
   ("David","01/01/2005")
  ).toDf("name","Birthdate").to_date($"Birthday")

在此示例中,我正在创建一个dataFrame,并尝试将生日的类型从字符串转换为日期,但是,当编码$时不被接受,因此我必须创建一个中间值:

    val df1:DataFrame= Seq(
           ("Alex", "04/01/1992"),
           ("Sarah","01/01/2000"),
           ("David","01/01/2005")
          ).toDf("name","Birthdate")
   val df2= df1.to_date($"Birthday")

有没有办法获得中间变量?在scala代码中,$等于什么?

scala apache-spark apache-spark-sql
1个回答
0
投票

您可以使用col和withColumn:

%scala
import org.apache.spark.sql.functions.{col,to_date}

val df= Seq(
   ("Alex", "04/01/1992"),
   ("Sarah","01/01/2000"),
   ("David","01/01/2005")
  ).toDF("name","Birthdate").withColumn("Birthdate", to_date(col("Birthdate"),"dd/MM/yyyy")).show()

+-----+----------+
| name| Birthdate|
+-----+----------+
| Alex|1992-01-04|
|Sarah|2000-01-01|
|David|2005-01-01|
+-----+----------+
© www.soinside.com 2019 - 2024. All rights reserved.