Sparklyr не может ссылаться на таблицу в spark_apply

Я хочу использовать spark_apply, чтобы пройти через ряд процессов данных для генерации объектов. Для этого мне нужно сослаться на таблицы, уже загруженные в spark, но получить следующую ошибку:

ОШИБКА sparklyr: RScript (3076) неожиданно завершил работу: объект 'ref_table' не найден

Воспроизводимый пример:

ref_table <-   sdf_along(sc, 10)
apply_table <- sdf_along(sc, 10)

spark_apply(x = apply_table, 
            f = function(x) {
              c(x, ref_table)
            })

Я знаю, что могу ссылаться на библиотеки внутри функции, но не знаю, как вызывать данные. Я запускаю локальный искровой кластер через rstudio.

1 ответ

Решение

К сожалению, здесь следует ожидать неудачи.

Apache Spark и из-за этой платформы на его основе не поддерживает вложенные преобразования, подобные этой. Вы не можете использовать вложенные преобразования, распределенные объекты или контекст Spark (spark_connection в случае sparklyr) из рабочего кода.

Для более подробного объяснения, пожалуйста, проверьте мой ответ. Есть ли причина не использовать SparkContext.getOrCreate при написании искрового задания?,

Ваш вопрос не дает достаточного контекста, чтобы определить лучший курс действий здесь, но в целом есть два возможных решения:

  • Пока один из наборов данных достаточно мал для хранения в памяти, используйте его непосредственно в замыкании как обычный объект R.
  • Переформулируйте свою проблему как join или декартово произведение (Spark's crossJoin).
Другие вопросы по тегам