Функции преобразования функции sparklyr приводят к ошибке - PullRequest
0 голосов
/ 10 мая 2018

У меня проблемы с использованием функций ft_ .. из пакета sparklyr R.ft_bucketizer работает, а ft_normalizer или ft_min_max_scaler - нет.Вот пример:

library(sparklyr)
library(dplyr)
library(nycflights13)

sc <- spark_connect(master = "local", version = "2.1.0")
x = flights %>% select(dep_delay)
x_tbl <- sdf_copy_to(sc, x) 

# works fine
ft_binarizer(x=x_tbl, input.col = "dep_delay", output.col = "delayed", threshold = 0)

# error
ft_normalizer(x= x_tbl, input.col = "dep_delay", output.col = "delayed_norm")

# error
ft_min_max_scaler(x= x_tbl,input.col = "dep_delay",output.col = "delayed_min_max")

Возвращает нормализатор:

Ошибка: org.apache.spark.SparkException: задание прервано из-за сбоя этапа: сбой задачи 0 на этапе 9.01 раз, последний сбой: потерянная задача 0.0 на этапе 9.0 (TID 9, localhost, драйвер исполнителя): org.apache.spark.SparkException: не удалось выполнить пользовательскую функцию ($ anonfun $ createTransformFunc $ 1: (double) => vector) "

min_max_scaler возвращает:

" Ошибка: java.lang.IllegalArgumentException: требование не выполнено: столбец dep_delay должен иметь тип org.apache.spark.ml.linalg.VectorUDT@3bfc3ba7, но на самом деле был DoubleType. "

Я думаю, что это проблема с типом данных, но не знаю, как ее решить. Кто-нибудь знает, что делать?

Большое спасибо заранее!

1 Ответ

0 голосов
/ 10 мая 2018

ft_normalizer работает с Vector столбцами, поэтому сначала нужно использовать ft_vector_assembler:

ft_vector_assembler(x_tbl, input_cols="dep_delay", output_col="dep_delay_v") %>% 
  ft_normalizer(input.col = "dep_delay_v", output.col = "delayed_v_norm")
...