Проблемы чтения значений TimeStamp в R Sparklyr - PullRequest
0 голосов
/ 24 января 2020

У меня проблемы с чтением меток времени следующего формата, 2020-01-20T19:37:58Z, хранящихся в виде символа в CSV-файле. При чтении данных с использованием spark_read_csv() на дисплее консоли отображается правильное значение, однако, когда я пытаюсь получить часовую часть метки времени, оно показывает значение 14, а не фактическое 19.

Конечно, я предполагаю, что это проблема с форматированием часового пояса. Есть ли способ, которым я могу предотвратить попытки Spark переосмыслить значения времени и просто сохранить их в том виде, в котором они хранятся? В моем случае у меня будет более 500 ГБ меток времени, поэтому я думаю, что было бы лучше применить правильный формат метки времени в read_*(), чем делать это в mutate().

Я использую sparklyr 1.1.0, R 3.6.2 и Spark 2.3.3.

library(tidyverse)
library(sparklyr)

sc <- spark_connect(master = "local", version = "2.3")

df <- tibble(a = 1, b = "b", c = "2020-01-20T19:37:58Z") %>% print()
df %>% write_csv("time_test.csv")

# The time appears to be the same
sdf <- spark_read_csv(sc, "time_test.csv", overwrite = TRUE)
sdf

# The hive 'hour' function doesn't work, presumably a dbplyr issue
sdf %>% mutate(hour = hour(c))

# This succeeds, but the hour is wrong, it shows 14 instead of 19
sdf %>% mutate(hour = sql('hour(`c`)'))

# Disconnect
spark_disconnect(sc)

...