sparklyr sdf_collect和dplyr收集Spark大表上的函数需要花费很多时间才能运行?

时间:2019-01-28 15:12:25

标签: r apache-spark dplyr tidyverse sparklyr

我正在运行R Studio和R 3.5.2。

我已使用S3a中的parquet加载了约250个sparklyr::spark_read_parquet文件。

我需要从Spark(由sparklyr安装)中收集数据:

spark_install(version = "2.3.2", hadoop_version = "2.7")

但是由于某些原因,这项工作需要很长时间。有时,该任务分配给所有CPU,有时只有一个工作: enter image description here

请告知您如何解决dplyr::collectsparklyr::sdf_collect“运行年龄”问题。

还请理解,我无法为您提供数据,如果数据量很小,它将可以显着提高工作速度。

1 个答案:

答案 0 :(得分:1)

这是预期的行为。 dplyr::collectsparklyr::sdf_collect或Spark的本机collect会将所有数据带到驱动程序节点。

即使可行(视情况而定,您需要的存储量至少是数据实际大小的2-3倍),也势必会花费很长时间-驱动程序网络接口是最明显的瓶颈。 / p>

在实践中,如果您要收集所有数据,通常跳过网络和平台开销并直接使用本机工具直接加载数据更有意义(给出的描述是将数据下载到驱动程序并转换为R友好的文件格式)。