R SparkDataFrame POSIXlt не знает, как преобразовать 'x' в класс POSIXlt

Я пытаюсь получить числовой год из POSIXct SparkDataFrame с библиотекой lubridate, но получаю ошибку. Странно то, что он работает с обычными фреймами данных, но не с SparkDataFrames. см. код ниже.

Это несколько похожих вопросов о стековом потоке, но ответы работают только с фреймами данных, а не с SparkDataFrames. Мне нужно работать с ними, потому что набор данных огромен.

library("lubridate")

# Spark Data Frame
head(data_spark)
str(data_spark)

id  date_h  type
1   2018-03-02  Holiday
2   2018-01-01  Work
3   2012-02-12  Holiday

'SparkDataFrame': 3 variables:
 $ id    : int 1 2 3
 $ date_h: POSIXct 2018-03-02 2018-01-01 2012-02-12
 $ type  : chr "Holiday" "Work" "Holiday"

# Normal Data Frame
head(data_frame)    
str(data_frame)

id  date_h  type
1   2018-03-02  Holiday
2   2018-01-01  Work
3   2012-02-12  Holiday

'data.frame':   3 obs. of  3 variables:
 $ id    : int  1 2 3
 $ date_h: POSIXct, format: "2018-03-02" "2018-01-01" ...
 $ type  : chr  "Holiday" "Work" "Holiday"

Это прекрасно работает:

year_frame <- year(data_frame$date_h)
year_frame
2018 2018 2012

здесь я получил ошибку:

year_spark <- year(data_spark$date_h)
year_spark

Error in as.POSIXlt.default(x, tz = tz(x)): do not know how to convert 'x' to class “POSIXlt”
Traceback:

1. year(data_spark$date_h)
2. year.default(data_spark$date_h)
3. as.POSIXlt(x, tz = tz(x))
4. as.POSIXlt.default(x, tz = tz(x))
5. stop(gettextf("do not know how to convert '%s' to class %s", 
 .     deparse(substitute(x)), dQuote("POSIXlt")), domain = NA)

Я понятия не имею, почему я получил эту ошибку

0 ответов

Другие вопросы по тегам