Кто-нибудь знает, как я могу работать с большими данными в R? - PullRequest
2 голосов
/ 30 марта 2020

Анализ твитов в RStudio:

Мой CSV-файл содержит 4 000 000 твитов с пятью столбцами: screen_name, text, creation_at, favour_count и retweet_count.

Я пытаюсь определить частоту хэштегов используя следующие коды, однако он работает слишком медленно в течение нескольких дней и иногда происходит сбой RStudio.

mydata %>%
  unnest_tokens(word, text, token ="tweets") %>%
  anti_join(stop_words, by= "word")

Я использовал другие подходы для обработки больших данных в R, такие как: https://rviews.rstudio.com/2019/07/17/3-big-data-strategies-for-r/ или https://spark.rstudio.com/guides/textmining/ и библиотека Spark: https://spark.rstudio.com/guides/textmining/. Ни один из них не работает для меня.

В Spark я делаю следующее, но RStudio не может скопировать мой набор данных в Spark. Я вижу, что "Spark работает" в моем RStudio даже в течение одного дня без копирования моего набора данных в Spark.

Подключение к кластеру Spark:

spark_conn <- spark_connect("local")

Копирование track_metadata в Spark:

track_metadata_tbl <- copy_to(spark_conn, my_database)

Есть ли у вас какие-либо предложения / инструкции / ссылки, которые помогли бы мне проанализировать мои данные?

Мой ноутбук - Ma c Процессор: 2,9 ГГц Dual- Память Intel Core i5: 8 ГБ, 2133 МГц, LPDDR3

Ответы [ 2 ]

1 голос
/ 13 апреля 2020

Если бы я был в вашей ситуации, я бы не пытался анализировать весь этот файл сразу, а вместо этого работал бы с порцией за раз.

Я бы использовал vroom для чтения данных и работы с порциями данных за раз (начиная, скажем, с 50 тыс. Строк, а затем прослеживая, насколько вы можете масштабироваться до делать сразу).

Если вас интересует только подсчет хэштегов, вы можете сделать что-то вроде:

mydata %>%
  unnest_tokens(word, text, token ="tweets") %>%
  filter(str_detect(word, "^#")) %>%
  count(word, sort = TRUE)

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

0 голосов
/ 30 марта 2020

8ГБ не очень много памяти на самом деле: пожалуйста, посмотрите на Activity Monitor, чтобы увидеть, как используется память.

Использование sparklyr может быть очень хорошей идеей. Я подозреваю, что проблемы с памятью вызывают сбой загрузки. Вам нужно будет немного поработать, чтобы правильно оптимизировать локальный экземпляр spark. Вот некоторые ресурсы для запуска sparkR:

https://github.com/sparklyr/sparklyr/issues/525

Правильно конфигурируя объем памяти исполнителя, я смог без проблем запустить copy_to.

Еще один:

Теперь это работает для меня. Я неправильно настроил память водителя. Я увеличил его и теперь все работает отлично.

Вот примечание об альтернативе copy_to()

https://community.rstudio.com/t/sparklyr-s-error/12370

copy_to () в настоящее время не оптимизировано и, следовательно, не рекомендуется для копирования средних или больших наборов данных. Вместо этого мы рекомендуем вам скопировать данные в кластер, а затем загрузить данные в Spark с помощью семейства функций spark_read _ * (). Например, копируя все данные в формате CSV, а затем используя spark_read_csv ().

Тем не менее, мы также изучаем возможности улучшения copy_to () и collect () с помощью Apache Arrow, вы можете отслеживать ход выполнения этой работы с этим запросом на извлечение: github.com/rstudio/sparklyr/pull/1611.

...