SparklyR:直接转换为实木复合地板

问题描述 投票:2回答:1

您好我是新来的集群计算,目前我只玩了独立的集群(sc <- spark_connect(master = "local", version = '2.0.2'))上。我有一个巨大的csv文件(15GB),我想转换为拼花文件(代码块三解释了为什么)。这15GB的文件已经是一个60GB文件的样本,我需要使用/查询完整的60GB文件,当我停止玩角落找寻。目前我所做的是:

> system.time({FILE<-spark_read_csv(sc,"FILE",file.path("DATA/FILE.csv"),memory = FALSE)})
   user  system elapsed 
   0.16    0.04 1017.11 
> system.time({spark_write_parquet(FILE, file.path("DATA/FILE.parquet"),mode='overwrite')})
   user  system elapsed 
   0.92    1.48 1267.72 
> system.time({FILE<-spark_read_parquet(sc,"FILE", file.path("DATA/FILE.parquet"),memory = FALSE)})
   user  system elapsed 
   0.00    0.00    0.26 

正如你可以看到这需要相当长的时间。我想知道什么代码(spark_read_csv)的第一线与memory = FALSE发生什么呢?它在哪里读/保存到?和我可以访问的位置,当我拔下,再插会话?

此外,有一种方法以更有效的方式来步骤1和2结合?

我不回避,试图使用尚未推向市场因为它是简单,可自动在很大程度上API中的较低级别的功能。

r apache-spark sparklyr
1个回答
0
投票

spark_read_csvmemory = FALSE调用不保存任何数据。延迟你是不相关的数据加载本身,而是架构推理过程,这需要一个单独的数据扫描。

由于方便,因为它是使用架构推断,它是更好的性能,明智的做法是明确规定的模式,作为名为向量,映射的列名to type's simple string。例如,如果你在一个local模式加载虹膜数据集:

path <- tempfile()
readr::write_csv(iris, path)

你会使用

spark_read_csv(
  sc, "iris", path, infer_schema=FALSE, memory = FALSE,
  columns = c(
    Sepal_Length = "double", Sepal_Width = "double", 
    Petal_Length = "double", Petal_Width = "double",
    Species = "string"))
© www.soinside.com 2019 - 2024. All rights reserved.