【问题标题】:sparklyr date_format only works for certain formatssparklyr date_format 仅适用于某些格式
【发布时间】:2021-03-20 04:03:29
【问题描述】:

我正在尝试使用 Hive UDF date_format() 来提取星期几,但它只返回 NA。我们来看一个例子

sc <- sparklyr::spark_connect(master = "local")
df <- dplyr::copy_to(
  sc,
  data.frame(date = as.POSIXct("2020-01-01")),
  "df"
)
df
# # Source: spark<df> [?? x 1]
#   date
#   <dttm>
# 1 2019-12-31 23:00:00

# Extracting the year works fine...
dplyr::mutate_at(
  .tbl = df,
  .vars = "date",
  .funs = ~date_format(., "yyyy")
)
# # Source: spark<?> [?? x 1]
#   date
#   <chr>
# 1 2020

# But extracting the day of the week does not...
dplyr::mutate_at(
  .tbl = df,
  .vars = "date",
  .funs = ~date_format(., "E")
)
# # Source: spark<?> [?? x 1]
#   date
#   <chr>
# 1 NA

任何帮助将不胜感激。一些系统信息:

  • Mac OS 10.15.7
  • Spark 3.0.1
  • sparklyr 1.5.1

【问题讨论】:

  • 我使用的是 sparklyr 1.5.1 但 spark 2.3.2。我不能让 mutate_at 足够奇怪地工作。但是mutate(dow = date_format(date,'EEEE')) 确实对我有用。

标签: r apache-spark hive apache-spark-sql sparklyr


【解决方案1】:

我的尝试是改用mutate。如果你想原地改变,请将DoW替换为date

library(tidyverse)
library(sparklyr)

sc <- spark_connect(master = "local")

df <- dplyr::copy_to(sc, data.frame(date = as.POSIXct("2020-01-01")), "df")
df %>% mutate(DoW=date_format(date, "E"))
# Source: spark<?> [?? x 2]
  date                DoW  
  <dttm>              <chr>
1 2019-12-31 23:00:00 Wed  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-24
    • 2018-11-09
    • 2012-10-30
    • 2020-10-21
    • 2019-04-11
    相关资源
    最近更新 更多