chunk.apply

R'de Ölçeklenebilir Veri İşleme

Simon Urbanek

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

chunk.apply()

  • Döngü sürecini soyutlar
  • Paralel çalıştırmayı etkinleştirir
  • iotools, Apache Hadoop altyapısında veri işlemeni sağlayan hmr için temel oluşturur
R'de Ölçeklenebilir Veri İşleme

mstrsplit() parçaları matris olarak okur

# foo.csv'den satır parçalarını almak için chunk.apply kullan
chunk_col_sums <- chunk.apply("foo.csv",

# Her parçayı işlemek için bir fonksiyon function(chunk) { # Parçayı matrise çevir m <- mstrsplit(chunk, type = "numeric", sep = ",") # Sütun toplamlarını döndür colSums(m) }, # Bayt cinsinden en büyük parça boyutu CH.MAX.SIZE = 1e5)
# Toplam toplamı al colSums(chunk_col_sums)
R'de Ölçeklenebilir Veri İşleme

dstrsplit() parçaları veri çerçevesi olarak okur

# foo.csv'den satır parçalarını almak için chunk.apply kullan
chunk_col_sums <- chunk.apply("foo.csv",

 # Her parçayı işlemek için bir fonksiyon
 function(chunk) {
   # Parçayı veri çerçevesine çevir
   d <- dstrsplit(chunk, col_types = rep("numeric", 3), sep = ",")
   # Sütun toplamlarını döndür
   colSums(d)
 }, 
 # Bayt cinsinden en büyük parça boyutu
 CH.MAX.SIZE = 1e5)

# Toplam toplamı al
colSums(chunk_col_sums)
R'de Ölçeklenebilir Veri İşleme

chunk.apply()'i paralelleştirme

# foo.csv'den satır parçalarını almak için chunk.apply kullan
chunk_col_sums <- chunk.apply("foo.csv",

 # Her parçayı işlemek için bir fonksiyon
 function(chunk) {

   # Parçayı veri çerçevesine çevir
   d <- dstrsplit(chunk, col_types = rep("numeric", 3), sep = ",")
   colSums(d)
 }, 
 # 2 işlemci veri okur ve işler
 CH.PARALLEL = 2)

# Toplam toplamı al
colSums(chunk_col_sums)
R'de Ölçeklenebilir Veri İşleme

Paralelleştirme hakkında not

  • İşlemci sayısını artırmak her zaman kodunu hızlandırmaz
  • Tek bir makinede ek işlemciler eklerken genelde azalan getiri vardır
R'de Ölçeklenebilir Veri İşleme

Hadi pratik yapalım!

R'de Ölçeklenebilir Veri İşleme

Preparing Video For Download...