【问题标题】:Does anyone know how I can work with big data in R?有谁知道我如何在 R 中处理大数据?
【发布时间】:2020-07-10 07:06:37
【问题描述】:

在 RStudio 中分析推文:

我的 csv 文件包含 4,000,000 条推文,有五列:screen_name、text、created_at、 favorite_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。我在我的 RStudio 中看到“Spark 正在运行”甚至一天都没有将我的数据集复制到 Spark。

连接到您的 Spark 集群:

spark_conn <- spark_connect("local")

将 track_metadata 复制到 Spark:

track_metadata_tbl <- copy_to(spark_conn, my_database)

您有什么建议/说明/链接可以帮助我分析我的数据吗?

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

【问题讨论】:

  • 内存使用情况如何?转到Activity Monitor 并报告。 8GB 做任何事情都不算多:即使不进行数据处理,我的 16GB mbpro 也始终处于它可以处理的边缘。另外:sparkr 是个好主意:你可以问另一个问题,如何让它运行
  • 加载到本地 MySQL 或 Postgres 数据库并在其上运行聚合怎么样?

标签: r apache-spark-sql bigdata tidytext


【解决方案1】:

如果我遇到你的情况,我不会尝试一次解析整个文件,而是一次处理一个块。

我会使用vroom 来读取数据,并一次处理数据块(例如,从 50k 行开始,然后查看一次可以扩展多少行)。

如果您只想计算主题标签,您可以执行以下操作:

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

并将其附加到汇总结果的新 CSV 文件中。然后分块处理整个数据集。最后,您可以解析结果的 CSV 文件并重新汇总计数以求和并找到主题标签频率。

【讨论】:

    【解决方案2】:

    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() 进行改进,您可以通过以下拉取请求跟踪这项工作的进度:github.com/rstudio/sparklyr/pull/1611。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-03
      相关资源
      最近更新 更多