gpt4 book ai didi

scala - 转换 Spark 数据框中的日期模式

转载 作者:行者123 更新时间:2023-12-04 23:15:41 25 4
gpt4 key购买 nike

我在字符串数据类型的 Spark 数据框中有一列(日期为 yyyy-MM-dd 模式)
我想以 MM/dd/yyyy 模式显示列值

我的数据是

val df = sc.parallelize(Array(
("steak", "1990-01-01", "2000-01-01", 150),
("steak", "2000-01-02", "2001-01-13", 180),
("fish", "1990-01-01", "2001-01-01", 100)
)).toDF("name", "startDate", "endDate", "price")

df.show()

+-----+----------+----------+-----+
| name| startDate| endDate|price|
+-----+----------+----------+-----+
|steak|1990-01-01|2000-01-01| 150|
|steak|2000-01-02|2001-01-13| 180|
| fish|1990-01-01|2001-01-01| 100|
+-----+----------+----------+-----+

root
|-- name: string (nullable = true)
|-- startDate: string (nullable = true)
|-- endDate: string (nullable = true)
|-- price: integer (nullable = false)

我想以 MM/dd/yyyy 模式显示 endDate。我所能做的就是将列从 String 转换为 DateType
val df2 = df.select($"endDate".cast(DateType).alias("endDate"))

df2.show()

+----------+
| endDate|
+----------+
|2000-01-01|
|2001-01-13|
|2001-01-01|
+----------+

df2.printSchema()

root
|-- endDate: date (nullable = true)

我想以 MM/dd/yyyy 模式显示 endDate。我找到的唯一引用是 this这不能解决问题

最佳答案

您可以使用 date_format 函数。

  import sqlContext.implicits._
import org.apache.spark.sql.functions._

val df = sc.parallelize(Array(
("steak", "1990-01-01", "2000-01-01", 150),
("steak", "2000-01-02", "2001-01-13", 180),
("fish", "1990-01-01", "2001-01-01", 100))).toDF("name", "startDate", "endDate", "price")

df.show()

df.select(date_format(col("endDate"), "MM/dd/yyyy")).show

输出 :
+-------------------------------+
|date_format(endDate,MM/dd/yyyy)|
+-------------------------------+
| 01/01/2000|
| 01/13/2001|
| 01/01/2001|
+-------------------------------+

关于scala - 转换 Spark 数据框中的日期模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43348168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com