Я довольно новичок в Spark, и в настоящее время я использую его с помощью R API через яркий пакет. Я создал фрейм данных Spark из запроса куста. Типы данных не указаны правильно в исходной таблице, и я пытаюсь сбросить тип данных, используя функции из пакета dplyr
. Ниже приведен код, который я пробовал:Изменение типа данных столбца на коэффициент с sparklyr
prod_dev <- sdf_load_table(...)
num_var <- c("var1", "var2"....)
cat_var <- c("var_a","var_b", ...)
pos1 <- which(colnames(prod_dev) %in% num_var)
pos2 <- which(colnames(prod_dev) %in% cat_var)
prod_model_tbl <- prod_dev %>%
mutate(age = 2016- as.numeric(substr(dob_yyyymmdd,1,4))) %>%
mutate(msa_fg = ifelse(is.na(msacode2000), 0, 1)) %>%
mutate(csa_fg = ifelse(is.na(csacode), 0, 1)) %>%
mutate_each(funs(factor), pos2) %>%
mutate_each(funs(as.numeric), pos1)
Код будет работать, если prod_dev является фреймом данных R. Но использовать его на рамке Спарк данных не представляется для получения правильного результата:
> head(prod_model_tbl)
Source: query [?? x 99]
Database: spark connection master=yarn-client app=sparklyr_test local=FALSE
Error: org.apache.spark.sql.AnalysisException: undefined function FACTOR; line 97 pos 2248 at org.apache.spark.sql.hive.HiveFunctionRegistry....
Может кто-то пожалуйста, посоветовать, как сделать необходимые изменения в рамке Спарк данных?