有人知道如何在R中处理大数据吗?

3
在RStudio中分析推文: 我的csv文件包含400万条推文,具有五个列:screen_name、text、created_at、favorite_count和retweet_count。 我正在尝试使用以下代码识别hashtag的频率,但是该代码运行速度过慢,需要几天时间,有时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。即使一个多天,我仍然可以在RStudio中看到 "Spark is Running",但数据并未成功复制到Spark。 连接到你的Spark集群:
spark_conn <- spark_connect("local")

将track_metadata复制到Spark:

track_metadata_tbl <- copy_to(spark_conn, my_database)

你有哪些建议/说明/链接可以帮助我分析数据?

我的笔记本电脑是苹果电脑,处理器:2.9 GHz 双核 Intel Core i5,内存:8 GB 2133 MHz LPDDR3。


内存使用情况如何?请打开“活动监视器”并反馈信息。8GB几乎无法完成任何任务:我的16GB mbpro即使不进行数据处理,也经常处于极限状态。此外,“sparkr”确实是个好主意:您可以提问如何运行它。 - WestCoastProjects
将数据加载到本地MySQL或Postgres数据库中,然后对其运行聚合操作怎么样? - hyprnick
2个回答

1
如果我处于你的情况,我不会一次性解析整个文件,而是逐个块地处理。我会使用vroom读取数据,并一次处理一部分数据(从50k行开始,然后看看你能扩展到多少)。如果您只对计算哈希标记感兴趣,可以这样做:
mydata %>%
  unnest_tokens(word, text, token ="tweets") %>%
  filter(str_detect(word, "^#")) %>%
  count(word, sort = TRUE)
将其附加到聚合结果的新CSV中。然后分块处理整个数据集。最后,您可以解析结果的CSV并重新聚合计数以总结并找到hashtag频率。

0

8GB 的内存实际上并不算很多:请查看 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_read _*()函数族在 Spark 中加载数据。例如,通过将所有数据复制为 CSV,然后使用 spark_read_csv()。 也就是说,我们还在研究使用 Apache Arrow 对 copy_to() 和 collect() 进行改进,您可以使用此 pull request 跟踪此工作的进展:github.com/rstudio/sparklyr/pull/1611 。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,