chunk.apply

Traitement de données à grande échelle en R

Simon Urbanek

Member of R-Core, Lead Inventive Scientist, AT&T Labs Research

chunk.apply()

  • Simplifie le bouclage
  • Active l'exécution parallèle
  • iotools est à la base de hmr, qui permet de traiter des données sur l'infrastructure Apache Hadoop
Traitement de données à grande échelle en R

mstrsplit() lit les blocs en matrices

# Utilisez chunk.apply pour lire des blocs de lignes depuis foo.csv
chunk_col_sums <- chunk.apply("foo.csv",

# Fonction pour traiter chaque bloc function(chunk) { # Convertir le bloc en matrice m <- mstrsplit(chunk, type = "numeric", sep = ",") # Retourner les sommes par colonne colSums(m) }, # Taille maximale d'un bloc en octets CH.MAX.SIZE = 1e5)
# Obtenir la somme totale colSums(chunk_col_sums)
Traitement de données à grande échelle en R

dstrsplit() lit les blocs en data frames

# Utilisez chunk.apply pour lire des blocs de lignes depuis foo.csv
chunk_col_sums <- chunk.apply("foo.csv",

 # Fonction pour traiter chaque bloc
 function(chunk) {
   # Convertir le bloc en data frame
   d <- dstrsplit(chunk, col_types = rep("numeric", 3), sep = ",")
   # Retourner les sommes par colonne
   colSums(d)
 }, 
 # Taille maximale d'un bloc en octets
 CH.MAX.SIZE = 1e5)

# Obtenir la somme totale
colSums(chunk_col_sums)
Traitement de données à grande échelle en R

Paralléliser chunk.apply()

# Utilisez chunk.apply pour lire des blocs de lignes depuis foo.csv
chunk_col_sums <- chunk.apply("foo.csv",

 # Fonction pour traiter chaque bloc
 function(chunk) {

   # Convertir le bloc en data frame
   d <- dstrsplit(chunk, col_types = rep("numeric", 3), sep = ",")
   colSums(d)
 }, 
 # 2 processeurs lisent et traitent les données
 CH.PARALLEL = 2)

# Obtenir la somme totale
colSums(chunk_col_sums)
Traitement de données à grande échelle en R

Remarque sur la parallélisation

  • Augmenter le nombre de processeurs n'accélère pas toujours votre code
  • Les gains diminuent souvent quand on ajoute des processeurs sur une seule machine
Traitement de données à grande échelle en R

Passons à la pratique !

Traitement de données à grande échelle en R

Preparing Video For Download...