【问题标题】:How to Open "GZ FILE" using sparklyr in R?如何在 R 中使用 sparklyr 打开“GZ 文件”?
【发布时间】:2019-06-16 19:14:38
【问题描述】:

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

【问题讨论】:

    标签: r apache-spark rstudio sparklyr gzip


    【解决方案1】:

    默认 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 之前,通常使用标准系统工具将其解压缩。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-10
      • 2017-04-09
      • 1970-01-01
      • 2011-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-17
      相关资源
      最近更新 更多