【发布时间】:2018-08-27 13:08:21
【问题描述】:
我在sparklyr 中有一些unix 时间转换为时间戳,出于某些原因,我还需要将它们转换为字符串。
不幸的是,在转换为字符串 hive 的过程中似乎转换为 EST(我的语言环境)。
df_new <- spark_read_parquet(sc, "/mypath/parquet_*",
overwrite = TRUE,
name = "df_new",
memory = FALSE,
options = list(mergeSchema = "true"))
> df_new %>%
mutate(unix_t = from_utc_timestamp(timestamp(t) ,'UTC'),
date_str = date_format(unix_t, 'yyyy-MM-dd HH:mm:ss z'),
date_alt = to_date(from_utc_timestamp(timestamp(t) ,'UTC'))) %>%
select(t, unix_t, date_str, date_alt) %>% head(5)
# Source: lazy query [?? x 4]
# Database: spark_connection
t unix_t date_str date_alt
<dbl> <dttm> <chr> <date>
1 1419547405. 2014-12-25 22:43:25 2014-12-25 17:43:25 EST 2014-12-25
2 1418469714. 2014-12-13 11:21:54 2014-12-13 06:21:54 EST 2014-12-13
3 1419126103. 2014-12-21 01:41:43 2014-12-20 20:41:43 EST 2014-12-20
4 1419389856. 2014-12-24 02:57:36 2014-12-23 21:57:36 EST 2014-12-23
5 1418271811. 2014-12-11 04:23:31 2014-12-10 23:23:31 EST 2014-12-10
您可以看到date_str 和date_alt 都使用EST 时区。我在这里需要UTC。我该怎么做?
谢谢!
【问题讨论】:
-
查找 POSIXct。另外,我很确定月份和分钟的格式字符串是相反的。您可能需要仔细检查
-
我们在这里谈论火花,对吧?
-
这可能很有趣; stackoverflow.com/a/11237811
-
谢谢,但你确定这在 sparklyr 中有效吗?我不是在这里谈论base R
-
你真的在这里使用
sparklyr而不是SparkR吗?
标签: r apache-spark hive timestamp sparklyr