Мне нужно использовать пакеты R с функцией spark_apply в пакете sparklyr. rдокументация не совсем понятно. Я пытался заставить spark_apply работать, следуя этому ссылка на сайт. Это работало для первой части со следующими модификациями.
Рабочая часть:
library(sparklyr)
spark_apply_bundle(packages = T, base_path = getwd())
bundle <- paste(getwd(), list.files()[grep("\\.tar$",list.files())][1], sep = "/")
hdfs_path <- "hdfs://<my-ip>/user/hadoop/R/packages/packages.tar"
system("hdfs dfs -moveFromLocal", bundle, "hdfs://<my-ip>/user/hadoop/R/packages")
config <- spark_config()
config$sparklyr.shell.files <- "hdfs://<my-ip>/user/hadoop/R/packages/packages.tar"
sc <- spark_connect(master = "yarn-client",
version = "2.4.0",
config = config)
mtcars_sparklyr <- copy_to(sc, mtcars)
Однако, когда я пытаюсь использовать функцию svm в spark_apply, она не работает с аргументом packages.
result <- mtcars_sparklyr %>%
spark_apply(
function(d) {
fit <- svm(d$mpg, d$wt)
sum(fit$residuals ^ 2)
},
group_by = "cyl",
packages = bundle
)
С другой стороны, работает следующее. Это если я передаю функцию svm в context. Однако мне требуется, чтобы аргумент packages работал, потому что у меня есть несколько пакетов и их функций для использования в spark_apply.
result <- mtcars_sparklyr %>%
spark_apply(
function(d) {
fit <- svm(d$mpg, d$wt)
sum(fit$residuals ^ 2)
},
group_by = "cyl",
context = {svm <- e1071::svm}
)





Есть ли удача в том, чтобы это работало? Одно из возможных предложений - загрузить библиотеку внутри функции, а не пытаться использовать для этого контекст. функция (d) {библиотека (e1071) fit <- e1071 :: svm (d $ mpg, d $ wt) sum (fit $ reisduals ^ 2)}, group_by = "cyl")