我有一个大型数据集,我正在尝试使用dyplyr在分布式sparklyr tbl上进行处理。到目前为止,我已经可以在mutate中使用其他功能,但是base :: grepl返回错误。我要使用spark复制的进程单线程进程是:
df.dummy <- data.frame(name = c('100', '101', 'c102', '103', 'c104'), value = seq(1,5))
df.dummy %>%
mutate(cat = grepl('c', name))
name value cat
1 100 1 FALSE
2 101 2 FALSE
3 c102 3 TRUE
4 103 4 FALSE
5 c104 5 TRUE
我正在尝试运行以使其在分布式处理中运行的代码:
sdf.dummy <- copy_to(sc, df.dummy)
sdf.dummy %>%
mutate(cat = grepl('c', name))
这会产生以下错误消息:
Error : org.apache.spark.sql.AnalysisException: Undefined function: 'GREPL'. This function is neither a registered temporary function nor a permanent function registered in the database 'default'.; line 1 pos 24
由于grep是基本函数,所以我无法想象这是由于未将其加载到工作程序节点而引起的。对于spark / sparklyr / dplyr来说还很陌生,所以如果我误解了该过程的任何基本原理,请纠正我。