我带来了一个表到色调,其中有一列日期,我试图发挥它在rstudio使用sparkyr。我想将字符列转换为日期列,如下所示:
Weather_data = mutate(Weather_data, date2 = as.Date(date, "%m/%d/%Y"))
运行正常,但当我检查时:
head(Weather_data)
如何正确地将chr转换为日期?谢谢!!!!
t2a7ltrp1#
问题是 sparklyr 不能正确支持spark DateType . 可以解析日期和正确的格式,但不能正确地表示这些 DateType 柱。如果足够的话,请按照下面的说明。在spark 2.2或更高版本中使用 to_date 使用java SimpleDataFormat 兼容字符串:
sparklyr
DateType
to_date
SimpleDataFormat
df <- copy_to(sc, data.frame(date=c("01/01/2010"))) parsed <- df %>% mutate(date_parsed = to_date(date, "MM/dd/yyyy")) parsed
# Source: lazy query [?? x 2] # Database: spark_connection date date_parsed <chr> <chr> 1 01/15/2010 2010-01-15
有趣的是,内部Spark对象仍然使用 DateType 柱:
parsed %>% spark_dataframe
<jobj[120]> class org.apache.spark.sql.Dataset [date: string, date_parsed: date]
对于早期版本 unix_timestamp 以及 cast (但要注意可能出现的时区问题):
unix_timestamp
cast
df %>% mutate(date_parsed = sql( "CAST(CAST(unix_timestamp(date, 'MM/dd/yyyy') AS timestamp) AS date)"))
编辑:在当前主机上,此问题似乎已解决( sparklyr_0.7.0-9105 ):
sparklyr_0.7.0-9105
# Source: lazy query [?? x 2] # Database: spark_connection date date_parsed <chr> <date> 1 01/01/2010 2009-12-31
1条答案
按热度按时间t2a7ltrp1#
问题是
sparklyr
不能正确支持sparkDateType
. 可以解析日期和正确的格式,但不能正确地表示这些DateType
柱。如果足够的话,请按照下面的说明。在spark 2.2或更高版本中使用
to_date
使用javaSimpleDataFormat
兼容字符串:有趣的是,内部Spark对象仍然使用
DateType
柱:对于早期版本
unix_timestamp
以及cast
(但要注意可能出现的时区问题):编辑:
在当前主机上,此问题似乎已解决(
sparklyr_0.7.0-9105
):