Sparklyr调用compute创建临时对象报错:argument is not interpretable as logical
问题原因
这个报错是compute()函数接收的temporary参数不是合法的布尔值(TRUE/FALSE)导致的,常见诱因是命名空间冲突、参数默认值被篡改或者版本兼容问题。
解决方案
- 方案1:显式传入
temporary逻辑参数,修改你的代码为:
ts_data<-tbl(sc,"db.table") %>% filter(condition) %>% compute("ts_data", temporary = TRUE)
如果需要创建持久化表而非临时表,将temporary的值改为FALSE即可。
- 方案2:显式指定调用sparklyr包的
compute函数,避免其他包(如dplyr)的同名函数覆盖导致的参数匹配错误:
ts_data<-tbl(sc,"db.table") %>% filter(condition) %>% sparklyr::compute("ts_data", temporary = TRUE)
- 方案3:检查Spark连接对象的配置是否异常,运行
str(sc$config)查看是否存在temporary相关的配置项被误设为非逻辑值(比如字符串、数字),如果存在则在初始化sc连接时重置该配置为布尔值。 - 方案4:若上述方案均无效,降级sparklyr到之前可正常运行的历史版本即可解决兼容问题。
内容的提问来源于stack exchange,提问作者Juilee
相关产品推荐
相关产品推荐

