如何在R中使用sparklyr打开“GZ FILE”?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在R中使用sparklyr打开“GZ FILE”?相关的知识,希望对你有一定的参考价值。
我想使用sparklyr包打开gz文件,因为我在R上使用Spark。我知道我可以使用read.delim2(gzfile("filename.csv.gz"), sep = ",", header = FALSE)
打开gz文件,我可以使用spark_read_csv
打开csv文件但是当我试图打开Spark中的gz文件。请帮忙!
默认的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是not splittable,对分布式应用程序来说是一个糟糕的选择。因此,如果文件很大,在继续使用Spark之前,使用标准系统工具解压缩通常是有意义的。
以上是关于如何在R中使用sparklyr打开“GZ FILE”?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 sparklyr 为 Apache Spark 实现 Stanford CoreNLP 包装器?
为啥 R lubridate::duration 数据类型使用 sparklyr 转换为 spark 中的字符?
使用 sparklyr 时无法在本地 Spark 连接中加载 .csv 数据
在 R 和 Sparklyr 中,将表写入 .CSV (spark_write_csv) 会产生许多文件,而不是一个文件。为啥?我可以改变吗?