使用sparklyr将字符串/ chr将日期(Converting string/chr to da

2019-09-26 13:40发布

我带来了一个表到色相其中有日期的一列,我试图在Rstudio使用sparklyr它玩。

我想一个字符列转换成像这样一个日期列:

Weather_data = mutate(Weather_data, date2 = as.Date(date, "%m/%d/%Y"))

这运行良好,但是当我检查:

head(Weather_data) 

如何正确我转换chr将日期?

谢谢!!!!

Answer 1:

问题是, sparklyr不能正确支持星火DateType 。 它可以解析日期和格式正确,但并不代表这些作为适当的DateType列。 如果这就够了,那么请按照下面的说明。

在星火2.2或更高版本使用to_date与Java 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

有趣的是内部星火对象仍使用DateType列:

parsed %>% spark_dataframe
<jobj[120]>
  class org.apache.spark.sql.Dataset
  [date: string, date_parsed: date]

对于早期版本unix_timestampcast (但要注意可能的时区的问题):

df %>%
  mutate(date_parsed = sql(
    "CAST(CAST(unix_timestamp(date, 'MM/dd/yyyy') AS timestamp) AS date)"))
# Source:   lazy query [?? x 2]
# Database: spark_connection
        date date_parsed
       <chr>       <chr>
1 01/15/2010  2010-01-15

编辑

它看起来像这个问题已经在当前主(解决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


文章来源: Converting string/chr to date using sparklyr