Проблема при чтении файла parquet с пакетом arrow

#r #parquet

#r #паркет

Вопрос:

Я только что начал читать/записывать файлы паркета с помощью пакета arrow. У меня есть файл размером 28 на 35 М, и я могу записать этот файл на диск с помощью write_parquet(данные, «файл.паркет») — это около 2,5 Гб.

Но когда я пытаюсь прочитать его с помощью write_arrow («файл.паркет»), я получаю следующую ошибку:

 Error: IOError: Couldn't deserialize thrift: TProtocolException: Exceeded size limit  

Я нахожусь на Intel Mac с 64 Гб оперативной памяти, так что я не думаю, что это проблема с памятью.

На самом деле, я только что нашел обходной путь: это data.table, и если я это сделаю:

 vars = names(data) write_parquet(data[,..vars], 'file.parquet')  

Я могу прочитать полученный файл паркета. Кто-нибудь имеет представление о том, что происходит?

Большое спасибо

sessionInfo():

 R version 4.1.2 (2021-11-01) Platform: x86_64-apple-darwin17.0 (64-bit) Running under: macOS Monterey 12.0.1  Matrix products: default LAPACK: /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRlapack.dylib  locale: [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8  attached base packages: [1] stats graphics grDevices utils datasets methods base   other attached packages: [1] qs_0.25.1.1 data.table_1.14.3 arrow_6.0.1   loaded via a namespace (and not attached):  [1] Rcpp_1.0.7 mvtnorm_1.1-3 lattice_0.20-45 png_0.1-7 zoo_1.8-9   [6] assertthat_0.2.1 digest_0.6.28 utf8_1.2.2 R6_2.5.1 plyr_1.8.6  [11] backports_1.4.0 stats4_4.1.2 ggplot2_3.3.5 pillar_1.6.4 rlang_0.4.12  [16] multcomp_1.4-17 rstudioapi_0.13 rpart_4.1-15 Matrix_1.3-4 checkmate_2.0.0  [21] splines_4.1.2 stringr_1.4.0 foreign_0.8-81 htmlwidgets_1.5.4 bit_4.0.4  [26] munsell_0.5.0 compiler_4.1.2 xfun_0.28 pkgconfig_2.0.3 base64enc_0.1-3  [31] libcoin_1.0-9 htmltools_0.5.2 nnet_7.3-16 tidyselect_1.1.1 tibble_3.1.6  [36] gridExtra_2.3 htmlTable_2.3.0 coin_1.4-2 Hmisc_4.6-0 codetools_0.2-18  [41] matrixStats_0.61.0 fansi_0.5.0 crayon_1.4.2 dplyr_1.0.7 MASS_7.3-54  [46] grid_4.1.2 gtable_0.3.0 lifecycle_1.0.1 DBI_1.1.1 magrittr_2.0.1  [51] scales_1.1.1 RcppParallel_5.1.4 stringi_1.7.5 latticeExtra_0.6-29 ellipsis_0.3.2  [56] generics_0.1.1 vctrs_0.3.8 stringfish_0.15.4 sandwich_3.0-1 RApiSerialize_0.1.0 [61] Formula_1.2-4 TH.data_1.1-0 RColorBrewer_1.1-2 tools_4.1.2 bit64_4.0.5  [66] glue_1.5.0 purrr_0.3.4 jpeg_0.1-9 parallel_4.1.2 fastmap_1.1.0  [71] survival_3.2-13 colorspace_2.0-2 cluster_2.1.2 knitr_1.36 modeltools_0.2-23   

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

1.Не могли бы вы поделиться имеющимися данными data или поделиться кодом, который генерирует данные с этой проблемой? Моя наивная попытка воспроизвести это, написав и прочитав эти игрушечные данные, работает для меня: rows lt;- 28e6 df lt;- data.frame( ints = sample(1:32767, rows, replace = TRUE), ints_larger = sample(1:.Machine$integer.max, rows, replace = TRUE), strings = sample(letters, rows, replace = TRUE), floats = runif(rows), factors = as.factor(sample(month.name, rows, replace = TRUE)) ) df lt;- cbind(df, df, df, df, df, df, df) data lt;- data.table::as.data.table(df)

2. Джон — Я хотел бы предоставить вам доступ к datq, но не совсем уверен, как это сделать. Я могу отправить его в dropbox или sync.com ссылка. Есть какие-нибудь предложения?