SparkR - cast to date format

筅森魡賤 提交于 2019-12-11 15:55:49

问题


How do I cast string to date with a specific format for a Spark dataframe?

In dplyr, I would do this:

df = data.frame(dt1 = c("22DEC16", "12JUN16"), x = c(10,20))
df = df %>% mutate(dt2 = as.Date(dt1, "%d%b%y"))

> df
  dt1     x        dt2
1 22DEC16 10 2016-12-22
2 12JUN16 20 2016-06-12

回答1:


In Spark 2.2 or later:

library(magrittr)

df <- createDataFrame(data.frame(dt=c("22DEC16", "12JUN16")))

df %>% withColumn("parsed", to_date(.$dt,  "ddMMMyy")) %>% head()
       dt     parsed
1 22DEC16 2016-12-22
2 12JUN16 2016-06-12

Before Spark 2.2:

df %>%
  withColumn(
   "parsed",
   unix_timestamp(.$dt, "ddMMMyy") %>% cast("timestamp") %>% cast("date")) %>%
  head()
       dt     parsed
1 22DEC16 2016-12-22
2 12JUN16 2016-06-12

With this solution you should watch for possible timezone inconsistencies.



来源:https://stackoverflow.com/questions/46716454/sparkr-cast-to-date-format

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!