繁体   English   中英

如何在 R 中使用 sparklyr 打开“GZ FILE”?

[英]How to Open "GZ FILE" using sparklyr in R?

我想使用 sparklyr 包打开 gz 文件,因为我在 R 上使用 Spark。我知道我可以使用read.delim2(gzfile("filename.csv.gz"), sep = ",", header = FALSE)打开 gz 文件,我可以使用spark_read_csv打开 csv 文件,但是当我尝试在 Spark 中打开 gz 文件时,这两种方法都spark_read_csv 请帮忙!

默认 Spark 阅读器可以透明地加载 gzip 压缩数据,无需任何额外配置,只要文件具有适当的扩展名,表明使用了压缩。

因此,如果您有一个 gzip 压缩文件(请注意,此类设置仅适用于本地模式。在分布式模式下,您需要共享存储),如下所示:

valid_path <- tempfile(fileext=".csv.gz")
valid_conn <- gzfile(valid_path, "w")
readr::write_csv(iris, valid_conn)
close(valid_conn )

spark_read_csv可以正常工作:

spark_read_csv(sc, "valid", valid_path)
# Source: spark<valid> [?? x 5]
   Sepal_Length Sepal_Width Petal_Length Petal_Width Species
          <dbl>       <dbl>        <dbl>       <dbl> <chr>  
 1          5.1         3.5          1.4         0.2 setosa 
 2          4.9         3            1.4         0.2 setosa 
 3          4.7         3.2          1.3         0.2 setosa 
 4          4.6         3.1          1.5         0.2 setosa 
 5          5           3.6          1.4         0.2 setosa 
 6          5.4         3.9          1.7         0.4 setosa 
 7          4.6         3.4          1.4         0.3 setosa 
 8          5           3.4          1.5         0.2 setosa 
 9          4.4         2.9          1.4         0.2 setosa 
10          4.9         3.1          1.5         0.1 setosa 

然而这

invalid_path <- tempfile(fileext=".csv")
invalid_conn <- gzfile(invalid_path, "w")
readr::write_csv(iris, invalid_conn)
close(invalid_conn)

不会,因为 Spark 会按原样读取数据

spark_read_csv(sc, "invalid", invalid_path)

另请记住,gzip 不可拆分,因此对于分布式应用程序来说是一个糟糕的选择。 因此,如果文件很大,通常在继续使用 Spark 之前使用标准系统工具将其解压缩是有意义的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM