Spark scala:从 utcstamp 获取工作日(函数适用于特定日期,不适用于整个列)
Spark scala: obtaining weekday from utcstamp (function works for specific date, not for entire column)
我有一个 scala / spark 数据框,其中一列名为“utcstamp”,其值格式如下:2018-12-12 21:15:00
我想获得一个新的带有星期几的栏目,并受this论坛问题的启发,使用了以下代码:
import java.util.Calendar
import java.text.SimpleDateFormat
val dowText = new SimpleDateFormat("E")
df = df.withColumn("weekday" , dowText.format(df.select(col("utcstamp"))))
但是,我收到以下错误:
<console>:58: error: type mismatch;
found : String
required: org.apache.spark.sql.Column
当我尝试将其应用于特定日期时(如 link 提供的那样)它起作用了,但我无法将其应用于整个列。
谁能帮我解决这个问题?如果您有将 utc 列转换为工作日的替代方法,那也适用于我。
您可以使用 Spark SQL 的 dayofweek
函数,它会为您提供一个 1-7 的数字,用于星期日到星期六:
val df2 = df.withColumn("weekday", dayofweek(col("utcstamp").cast("timestamp")))
或者,如果您想要单词 (Sun-Sat),
val df2 = df.withColumn("weekday", date_format(col("utcstamp").cast("timestamp"), "EEE"))
您可以简单地获取日期格式为 "E"
或 EEEE
的星期几(例如,星期日和星期日)
df.withColumn("weekday", date_format(to_timestamp($"utcstamp"), "E"))
如果您想将星期几作为数值使用 dayofweek
函数,该函数可从 spark 2.3+
获得
我有一个 scala / spark 数据框,其中一列名为“utcstamp”,其值格式如下:2018-12-12 21:15:00
我想获得一个新的带有星期几的栏目,并受this论坛问题的启发,使用了以下代码:
import java.util.Calendar
import java.text.SimpleDateFormat
val dowText = new SimpleDateFormat("E")
df = df.withColumn("weekday" , dowText.format(df.select(col("utcstamp"))))
但是,我收到以下错误:
<console>:58: error: type mismatch;
found : String
required: org.apache.spark.sql.Column
当我尝试将其应用于特定日期时(如 link 提供的那样)它起作用了,但我无法将其应用于整个列。
谁能帮我解决这个问题?如果您有将 utc 列转换为工作日的替代方法,那也适用于我。
您可以使用 Spark SQL 的 dayofweek
函数,它会为您提供一个 1-7 的数字,用于星期日到星期六:
val df2 = df.withColumn("weekday", dayofweek(col("utcstamp").cast("timestamp")))
或者,如果您想要单词 (Sun-Sat),
val df2 = df.withColumn("weekday", date_format(col("utcstamp").cast("timestamp"), "EEE"))
您可以简单地获取日期格式为 "E"
或 EEEE
的星期几(例如,星期日和星期日)
df.withColumn("weekday", date_format(to_timestamp($"utcstamp"), "E"))
如果您想将星期几作为数值使用 dayofweek
函数,该函数可从 spark 2.3+