r - 使用 sparklyr 将字符串/字符转换为日期

标签 r apache-spark hive dplyr sparklyr

我已经将一张表带入了 Hue,它有一列日期,我正在尝试在 Rstudio 中使用 sparklyr 来玩它。
我想将字符列转换为日期列,如下所示:

Weather_data = mutate(Weather_data, date2 = as.Date(date, "%m/%d/%Y"))
这运行良好,但是当我检查时:
head(Weather_data) 
enter image description here
如何正确地将 chr 转换为日期?
谢谢!!!!

最佳答案

问题是sparklyr不正确支持 Spark DateType .可以解析日期和正确格式,但不能将它们表示为正确的 DateType列。如果这足够了,请按照以下说明进行操作。

在 Spark 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

有趣的是内部 Spark 对象仍然使用 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

编辑 :

看起来这个问题已经在当前的 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

关于r - 使用 sparklyr 将字符串/字符转换为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46453646/

相关文章:

r - 将一组列与另一组列相乘的整洁方法

r - 单独 tibble 列表列中的矩阵求和

apache-spark - 在writeStream到Elasticsearch之前,如何将JSON数组转换为行?

apache-spark - pySpark 数据帧 "assert isinstance(dataType, DataType), "数据类型应为数据类型”

java - 从 Spark 中的 tar.gz 存档读取文件

hadoop - Hive 的隐式连接总是内部连接吗?

hadoop - 从Hive Hadoop中的SQL到HiveQL

r - 将连接字符串作为 R 中的函数参数传递

r - 从 R 中的控制台输入创建脚本

hadoop - 我可以将多个位置指向同一个配置单元外部表吗?