小编hjk*_*kop的帖子

Sparklyr 分割字符串(到字符串)

尝试在sparklyr中分割字符串,然后将其用于连接/过滤

我尝试了建议的方法,将字符串标记化,然后将其分隔为新列。这是一个可重现的示例(请注意,我必须将在 copy_to 之后变成字符串“NA”的 NA 转换为实际的 NA,有没有办法不必这样做)

x <- data.frame(Id=c(1,2,3,4),A=c('A-B','A-C','A-D',NA))
df <- copy_to(sc,x,'df')

df %>%  mutate(A = ifelse(A=='NA',NA,A)) %>% ft_regex_tokenizer(input.col="A", output.col="B", pattern="-",to_lower_case=F) %>% 
    sdf_separate_column("B", into=c("C", "D")) %>% filter(C=='A') 
Run Code Online (Sandbox Code Playgroud)

问题是,如果我尝试过滤新创建的列(例如%>% filter(C=='A')或加入它们,我会收到错误,请参见下文

x <- data.frame(Id=c(1,2,3,4),A=c('A-B','A-C','A-D',NA))
df <- copy_to(sc,x,'df')

df %>%  mutate(A = ifelse(A=='NA',NA,A)) %>% ft_regex_tokenizer(input.col="A", output.col="B", pattern="-",to_lower_case=F) %>% 
    sdf_separate_column("B", into=c("C", "D")) %>% filter(C=='A') 
Run Code Online (Sandbox Code Playgroud)

不知道为什么,因为根据 sdf_schema 创建的列的类型是“StringType”。

有没有一种解决方案使用sparklyr来实际分离列,我稍后可以将其用作字符串,而不必将帧写出到文件,或者必须收集到驱动程序节点?

r apache-spark apache-spark-ml sparklyr

3
推荐指数
1
解决办法
1792
查看次数

标签 统计

apache-spark ×1

apache-spark-ml ×1

r ×1

sparklyr ×1