3

我正在尝试通过并行处理来加速模糊连接。我有两个数据框,每个都有几千行,需要部分正则表达式连接。然而,它目前在单核上需要 40 多分钟。数据框如下所示:

require(fuzzyjoin)

df1 <- data.frame(first_last = c('Jackie S', 'James P', 'Jenny C', 'Jack N'),
                  age = sample(18:65, 4), 
                  stringsAsFactors = F)
df2 <- data.frame(id = c(1:6), 
                  full_name = c('Jackie Smith, CPA', 
                                'Joe Campbell III',
                                'James Park, MD', 
                                'Joyce May, DDS',
                                'Jenny Cox',
                                'Jack Null Jr'), 
                  stringsAsFactors = F)

merged <- regex_right_join(df2, df1, by = c('full_name' = 'first_last'))

(我正在使用 regex_right_join 因为 regex_left_join 不起作用)。

要运行并行处理,我尝试过

require(doParallel)
require(foreach)

cl <- makeCluster(4)
registerDoParallel(cl)

parallel_merged <- foreach(i=1, .combine = rbind) %dopar%
  fuzzyjoin::regex_right_join(df2, df1, by = c('full_name' = 'first_last'))

doParallel使用和时,用户和系统时间总是很短foreach。两者都<1s。但是,经过的时间foreach始终与在单核上运行(40 分钟以上)大致相同。

4

0 回答 0