如何使用sparklyr过滤部分匹配

时间:2017-09-18 23:19:51

标签: r apache-spark dplyr sparklyr

我是Sparklyr的新手(但熟悉spark和pyspark),我有一个非常基本的问题。我正在尝试根据部分匹配过滤列。在dplyr中,我会这样写我的操作:

businesses %>%
  filter(grepl('test', biz_name)) %>%
  head

然后在火花数据框上运行该代码给我:

  

错误:org.apache.spark.sql.AnalysisException:未定义的函数:'GREPL'。此函数既不是已注册的临时函数,也不是在数据库'project_eftpos_failure'中注册的永久函数。第5行pos 7

1 个答案:

答案 0 :(得分:6)

与标准Spark相同,您可以使用rlike(Java正则表达式):

df <- copy_to(sc, iris) 

df %>% filter(rlike(Species, "osa"))

# or anchored
df %>% filter(rlike(Species, "^.*osa.*$")

like(简单的SQL正则表达式):

df %>% filter(like(Species, "%osa%"))

这两种方法也可以用后缀表示法作为

df %>% filter(Species %rlike%  "^.*osa.*$")

df %>% filter(Species %like% "%osa%")

分别

有关详细信息,请参阅vignette("sql-translation")