chunk.apply

R में Scalable Data Processing

Simon Urbanek

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

chunk.apply()

  • लूपिंग प्रक्रिया को एब्स्ट्रैक्ट करता है
  • समानांतर निष्पादन सक्षम करता है
  • iotools hmr का आधार है, जो आपको Apache Hadoop इन्फ्रास्ट्रक्चर पर डेटा प्रोसेस करने देता है
R में Scalable Data Processing

mstrsplit() चंक्स को मैट्रिसेज़ के रूप में पढ़ता है

# foo.csv से पंक्तियों के चंक्स पाने के लिए chunk.apply का उपयोग करें
chunk_col_sums <- chunk.apply("foo.csv",

# हर chunk को प्रोसेस करने के लिए एक फंक्शन function(chunk) { # chunk को मैट्रिक्स में बदलें m <- mstrsplit(chunk, type = "numeric", sep = ",") # कॉलम के योग लौटाएँ colSums(m) }, # अधिकतम chunk साइज़ (bytes में) CH.MAX.SIZE = 1e5)
# कुल योग पाएँ colSums(chunk_col_sums)
R में Scalable Data Processing

dstrsplit() चंक्स को डेटा फ़्रेम के रूप में पढ़ता है

# foo.csv से पंक्तियों के चंक्स पाने के लिए chunk.apply का उपयोग करें
chunk_col_sums <- chunk.apply("foo.csv",

 # हर chunk को प्रोसेस करने के लिए एक फंक्शन
 function(chunk) {
   # chunk को डेटा फ़्रेम में बदलें
   d <- dstrsplit(chunk, col_types = rep("numeric", 3), sep = ",")
   # कॉलम के योग लौटाएँ
   colSums(d)
 }, 
 # अधिकतम chunk साइज़ (bytes में)
 CH.MAX.SIZE = 1e5)

# कुल योग पाएँ
colSums(chunk_col_sums)
R में Scalable Data Processing

chunk.apply() का समानांतरकरण

# foo.csv से पंक्तियों के चंक्स पाने के लिए chunk.apply का उपयोग करें
chunk_col_sums <- chunk.apply("foo.csv",

 # हर chunk को प्रोसेस करने के लिए एक फंक्शन
 function(chunk) {

   # chunk को डेटा फ़्रेम में बदलें
   d <- dstrsplit(chunk, col_types = rep("numeric", 3), sep = ",")
   colSums(d)
 }, 
 # 2 प्रोसेसर डेटा पढ़ें और प्रोसेस करें
 CH.PARALLEL = 2)

# कुल योग पाएँ
colSums(chunk_col_sums)
R में Scalable Data Processing

समानांतरकरण पर नोट

  • प्रोसेसर बढ़ाने से हमेशा कोड तेज नहीं चलता
  • एक ही मशीन पर अधिक प्रोसेसर जोड़ने पर आमतौर पर घटती वापसी मिलती है
R में Scalable Data Processing

अभ्यास करते हैं!

R में Scalable Data Processing

Preparing Video For Download...