Kei*_*ith 1 hive r dplyr apache-spark sparklyr
我带了一张桌子进入Hue,其中有一列日期,我正试图在Rstudio中使用sparklyr来玩它.
我想将字符列转换为日期列,如下所示:
Weather_data = mutate(Weather_data, date2 = as.Date(date, "%m/%d/%Y"))
Run Code Online (Sandbox Code Playgroud)
这运行正常,但当我检查:
head(Weather_data)
Run Code Online (Sandbox Code Playgroud)
如何正确地将chr转换为日期?
谢谢!!!!
问题是sparklyr不能正确支持Spark DateType.可以解析日期和正确的格式,但不能将它们表示为正确的DateType列.如果那就够了,请按照以下说明操作.
在Spark 2.2或更高版本中使用to_dateJava SimpleDataFormat兼容字符串:
df <- copy_to(sc, data.frame(date=c("01/01/2010")))
parsed <- df %>% mutate(date_parsed = to_date(date, "MM/dd/yyyy"))
parsed
Run Code Online (Sandbox Code Playgroud)
# Source: lazy query [?? x 2]
# Database: spark_connection
date date_parsed
<chr> <chr>
1 01/15/2010 2010-01-15
Run Code Online (Sandbox Code Playgroud)
有趣的是内部Spark对象仍然使用DateType列:
parsed %>% spark_dataframe
Run Code Online (Sandbox Code Playgroud)
<jobj[120]>
class org.apache.spark.sql.Dataset
[date: string, date_parsed: date]
Run Code Online (Sandbox Code Playgroud)
对于早期版本unix_timestamp和cast(但要注意可能的时区问题):
df %>%
mutate(date_parsed = sql(
"CAST(CAST(unix_timestamp(date, 'MM/dd/yyyy') AS timestamp) AS date)"))
Run Code Online (Sandbox Code Playgroud)
# Source: lazy query [?? x 2]
# Database: spark_connection
date date_parsed
<chr> <chr>
1 01/15/2010 2010-01-15
Run Code Online (Sandbox Code Playgroud)
编辑:
看起来这个问题已经解决了当前的master(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
Run Code Online (Sandbox Code Playgroud)