首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R mapReduce并行mapReduce

R mapReduce并行mapReduce
EN

Stack Overflow用户
提问于 2013-01-09 10:07:40
回答 1查看 980关注 0票数 3

我正在寻找aggregate()函数的并行版本,并且看起来http://cran.r-project.org/web/packages/mapReduce/mapReduce.pdfhttp://cran.r-project.org/web/packages/multicore/multicore.pdf正是我正在寻找的。

作为测试,我创建了一个包含10m条记录的数据集

代码语言:javascript
复制
blockSize <- 5000
records <- blockSize * 2000
df <- data.frame(id=1:records, value=rnorm(records))
df$period <- round(df$id/blockSize)
# now I want to aggregate by period and return mean of every block:
x <- aggregate(value ~ period, data=df, function(x) { mean(x) })
# with mapReduce it can be done
library(multicore)
library(mapReduce)
jobId <- mcparallel(mapReduce(map=period, mean(value), data=df))
y <- collect(jobId)

但不知何故,它仍然没有利用我笔记本电脑上的所有4个CPU核心:

代码语言:javascript
复制
$ top
02:00:35 up 3 days, 18:14,  3 users,  load average: 1,61, 1,20, 0,79
Tasks: 237 total,   2 running, 235 sleeping,   0 stopped,   0 zombie
%Cpu0  : 17,4 us,  5,1 sy,  0,0 ni, 74,3 id,  0,0 wa,  0,0 hi,  3,2 si,  0,0 st
%Cpu1  : 13,4 us,  6,9 sy,  0,0 ni, 79,7 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st
%Cpu2  : 21,3 us, 32,3 sy,  0,0 ni, 46,3 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st
%Cpu3  : 17,0 us, 36,0 sy,  0,0 ni, 47,0 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st
KiB Mem:   3989664 total,  3298340 used,   691324 free,    27248 buffers
KiB Swap:  7580668 total,  1154164 used,  6426504 free,   320360 cached

PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND
459 myuser    20   0 1850m 1,8g 1120 R  **99,1** 46,4   0:37.43 R

我使用R 2.15.1:

代码语言:javascript
复制
R version 2.15.1 (2012-06-22) -- "Roasted Marshmallows"
Copyright (C) 2012 The R Foundation for Statistical Computing
ISBN 3-900051-07-0
Platform: i686-pc-linux-gnu (32-bit)

我做错了什么,如何在利用多核的情况下聚合巨大的数据集?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-09 10:14:40

如何在R中聚合庞大的数据集

使用data.table

代码语言:javascript
复制
library(data.table)


DT <- data.table(df)
setkey(DT, period)

DT[, list(value = mean(value)), by = period]

这将不会使用多核,但将是非常快和内存效率。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14227237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档