如何在 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 阅读器可以透明地加载 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 之前使用标准系统工具将其解压缩是有意义的。
我想使用 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 之前使用标准系统工具将其解压缩是有意义的。