Распакуйте файл .gz из большого двоичного объекта Azure в r

#r #azure-storage #gzip

Вопрос:

Я хочу прочитать А. csv.gz из контейнера больших двоичных объектов Azure, но я борюсь с форматом .gz. Когда я загружаю файл локально, а затем читаю его в R с помощью readr, он работает нормально. Но когда я пытаюсь прочитать его из Azure, файл не читается корректно. Похоже, что файл не распакован. Это код, который я использовал для чтения локального файла (также read_csv2 работает нормально):

 df<-read_delim("filename.csv.gz", delim=";",col_names=c('epoch','SegmentID','TT','Speed','LoS','Coverage'),
                    col_types=cols(epoch = col_integer(),SegmentID = col_integer(),TT = col_integer(),Speed = col_integer(),LoS = col_integer(),Coverage = col_integer()))
 

И это то, что я пытаюсь сделать, чтобы получить файл из Azure:

 blob_urls_with_sas<-paste("https://name.blob.core.windows.net","/container/filename.csv.gz",
                          sas_token, sep="")
dfAzure<-read_delim(blob_urls_with_sas,delim=";",
col_names=c('epoch','SegmentID','TT','Speed','LoS','Coverage'),
                col_types=cols(epoch = col_integer(),SegmentID = col_integer(),TT = col_integer(),
                               Speed = col_integer(),LoS = col_integer(),Coverage =col_integer()))
 

или из пакета AzureStor

 test <- storage_read_delim(cont, "filename.csv.gz",delim=";",
col_names=c('epoch','SegmentID','TT','Speed','LoS','Coverage'),                           col_types=cols(epoch = col_integer(),SegmentID = col_integer(),TT = col_integer(),
                       Speed = col_integer(),LoS = col_integer(),Coverage = col_integer()))
 

Комментарии:

1. использовать fread() ?

2. Спасибо, это работает.

Ответ №1:

Одним из вариантов было бы использовать fread() файл из data.table, который естественным образом обрабатывает .gz файлы. Убедитесь, что вы установили R.utils сначала.