Как открыть "GZ FILE", используя sparklyr в R? - PullRequest
0 голосов
/ 23 января 2019

Я хотел бы открыть файл gz с помощью пакета sparklyr, так как я использую Spark на R. Я знаю, что могу использовать read.delim2(gzfile("filename.csv.gz"), sep = ",", header = FALSE), чтобы открыть файл gz, и я могу использовать spark_read_csv, чтобы открыть файл csv, но ниработает, когда я пытался открыть файл gz в Spark.Пожалуйста, помогите!

1 Ответ

0 голосов
/ 23 января 2019

Считыватели Spark по умолчанию могут загружать сжатые данные прозрачно, без какой-либо дополнительной настройки, если файл имеет правильное расширение, указывающее используемое сжатие.

Таким образом, если у вас есть файл в формате 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.

...