#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 ссылка. Есть какие-нибудь предложения?