#r #apache-spark #user-interface #rstudio #sparklyr
Вопрос:
Фон
Это может быть мой недостаток мастерства показывает, но так как я работаю на данные манипуляции R
, используя в RStudio, я люблю нажав на таблицы данных в «средах», части графического интерфейса пользователя (для меня это в верхней правой части экрана), чтобы увидеть, как мои суставы, мутирует и т. д. меняем стол(ы), как я двигаюсь через мой рабочий процесс. Это действует для меня как проверка визуального здравомыслия; когда дело доходит до таблиц и фреймов данных, я очень визуальный мыслитель, и мне нравится видеть свои результаты в коде. В качестве примера я нажму на это:
И увидеть что-то вроде этого:
Проблема
В последнее время из-за очень большого набора данных (~200 млн строк) мне пришлось выполнить часть своей dplyr
работы внутри sparklyr
, используя локальный экземпляр Apache Spark для обработки некоторых манипуляций с данными. Это работает в основном нормально, но я теряю возможность просматривать небольшие предварительные просмотры данных, потому что объекты фрейма данных spark выглядят как списки на панели среды:
Помимо нажатия, есть ли способ «просмотреть» мои фреймы данных Spark внутри RStudio во время работы с ними?
Что я пробовал
Так что вашей первой мыслью может быть «просто используйте head()
» — и вы будете правы! За исключением того, что для запуска head(d1, 5)
локальной искры df
с 200 миллионами строк требуется … очень давно.
Может быть, я что-то упускаю?
Ответ №1:
Как правило, я считаю, что вам нужно вызвать collect() в фрейме данных Spark. Поэтому я бы сначала попробовал фрейм данных Spark, скажем, 0,001% строк (если их 200 миллионов) с sparklyr::sdf_sample
помощью функции, а затем собрал бы этот образец в обычный фрейм данных для просмотра.
samp <- analysis_test %>% sdf_sample(fraction = .00001) %>% collect()
Комментарии:
1. Большое спасибо, Трэвис-я думаю, это могло бы сработать просто отлично. На данный момент я нахожусь вдали от компьютера, но я запущу это, как только вернусь, и отмечу, что на мой вопрос дан ответ, если он сработает.