问题描述
我正在使用SparkR
和sparklyr
在数据块中导入镶木地板文件。
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)