Skip to content

Commit

Permalink
* corrige la fonction mean_row_group_size pour prendre en compte les …
Browse files Browse the repository at this point in the history
…datasets (#538)

* corrige un nom de fonction incorrect

fixes #536
  • Loading branch information
nbc authored Oct 17, 2024
1 parent 6b72344 commit 906b759
Showing 1 changed file with 11 additions and 6 deletions.
17 changes: 11 additions & 6 deletions 03_Fiches_thematiques/Fiche_import_fichiers_parquet.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -180,18 +180,23 @@ Cette méthode est quasiment aussi efficace que le partitionnement.

### Vérifier qu'un fichier parquet est correctement optimisé

Dans certains cas pathologiques quand vous manipulez de très gros volumes de données (par exemple quand vous partitionnez avec `arrow::open_dataset` un volume de données de plusieurs de dizaine de millions de lignes), le package `arrow` peut générer des fichiers parquet avec un nombre de lignes par row group très petite (inférieur à 1000 voire à 100). Cela rendra toutes les requêtes sur vos fichiers extrèmement lent.
Dans certains cas pathologiques quand vous manipulez de très gros volumes de données (par exemple quand vous partitionnez avec `arrow::write_dataset` un volume de données de plusieurs de dizaine de millions de lignes), le package `arrow` peut générer des fichiers parquet avec un nombre de lignes par row group très petite (inférieur à 1000 voire à 100). Cela rendra toutes les requêtes sur vos fichiers extrêmement lent.

Pour vérifier que vos fichiers ont une taille de row group correcte, vous pouvez utiliser la fonction suivante :
Pour vérifier que vos fichiers ont une taille de row group correcte, vous pouvez utiliser la fonction suivante qui prend un chemin de fichier ou de dataset parquet et retourne le nombre moyen de lignes par row group pour chaque fichier :

```{r, eval = FALSE}
library(arrow)
mean_row_group_size <- function(path) {
a <- arrow::ParquetFileReader$create(path)
(a$num_rows / a$num_row_groups)
lapply(arrow::open_dataset(path)$files, function(file) {
a <- arrow::ParquetFileReader$create(file)
cat(a$num_rows / a$num_row_groups, "\t", file, "\n")
})
invisible()
}
# pour un fichier
mean_row_group_size('bpe2018/REG=11/part-0.parquet')
# pour un dataset
mean_row_group_size('bpe2018/')
```

Vous devez obtenir une valeur au moins égale à 10 000. Si vous obtenez une valeur inférieure, vous aurez intérêt à regénérer votre fichier en passant par d'autres méthodes (par exemple générer chaque partition en faisant une boucle et un filtre).
Expand Down

0 comments on commit 906b759

Please sign in to comment.