我是Sparklyr的新手(但熟悉spark和pyspark),我有一个非常基本的问题。我正在尝试根据部分匹配过滤列。在dplyr中,我会这样写我的操作:
businesses %>%
filter(grepl('test', biz_name)) %>%
head
然后在火花数据框上运行该代码给我:
错误:org.apache.spark.sql.AnalysisException:未定义的函数:'GREPL'。此函数既不是已注册的临时函数,也不是在数据库'project_eftpos_failure'中注册的永久函数。第5行pos 7
答案 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")
。