【发布时间】:2023-03-26 23:47:01
【问题描述】:
我有一个 500K 行的 spark DataFrame,它位于 parquet 文件中。我在 Spark(RStudio 和 R 3.3.1)中使用 spark 2.0.0 和 SparkR 包,它们都在具有 4 个内核和 8gb 内存的本地计算机上运行。
为了便于构建可以在 R 中处理的数据集,我使用 collect() 方法将 spark DataFrame 引入 R。这样做大约需要 3 分钟,这比读取使用 data.table 包的同等大小的 CSV 文件。
诚然,parquet 文件被压缩,解压所需的时间可能是问题的一部分,但我发现互联网上的其他 cmets 关于 collect 方法特别慢,而且解释方式很少。
我在 sparklyr 中尝试过相同的操作,而且速度要快得多。不幸的是,sparklyr 无法像 SparkR 那样轻松地在连接和过滤器中执行日期路径,所以我一直使用 SparkR。此外,我不相信我可以同时使用这两个包(即使用 SparkR 调用运行查询,然后使用 sparklyr 访问这些 spark 对象)。
有没有人有类似的经历,对 SparkR 的 collect() 方法相对缓慢的解释,和/或任何解决方案?
【问题讨论】:
标签: r apache-spark sparkr