SparkR和Sparklyr之间导入镶木地板文件所花费的时间差

问题描述

我正在使用SparkRsparklyr在数据块中导入镶木地板文件

data1 = SparkR::read.df("dbfs:/.../data202007*",source = "parquet",header = TRUE,inferSchema = TRUE)

data1 = sparklyr::spark_read_parquet(sc = sc,path = "dbfs:/.../data202007*")

导入的时差巨大:SparkR为6秒,sparklyr为11分钟! 有没有办法减少sparklyr中花费的时间?我更熟悉dplyr语法,因此也更熟悉sparklyr

解决方法

默认情况下,sparklyr::spark_read_parquet缓存结果(memory = TRUE)。

比较以下各项以获取缓存的结果:

SparkR::cache(SparkR::read.df("dbfs:/.../data202007*",source = "parquet",header = TRUE,inferSchema = TRUE))

sparklyr::spark_read_parquet(sc = sc,path = "dbfs:/.../data202007*")

这表示未缓存:

SparkR::read.df("dbfs:/.../data202007*",inferSchema = TRUE)`

sparklyr::spark_read_parquet(sc = sc,path = "dbfs:/.../data202007*",memory = FALSE)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...