过滤字符串上的 spark DataFrame 包含

Filter spark DataFrame on string contains

我正在使用 Spark 1.3.0 and Spark Avro 1.0.0。 我在 the example on the repository page 工作。以下代码运行良好

val df = sqlContext.read.avro("src/test/resources/episodes.avro")
df.filter("doctor > 5").write.avro("/tmp/output")

但是如果我需要查看 doctor 字符串是否包含子字符串怎么办?因为我们在字符串中编写表达式。我该怎么做才能做到 "contains"?

您可以使用 contains(这适用于任意序列):

df.filter($"foo".contains("bar"))

like(SQL 类似于 SQL 简单正则表达式,_ 匹配任意字符,% 匹配任意序列):

df.filter($"foo".like("bar"))

rlike(与Java regular expressions一样):

df.filter($"foo".rlike("bar"))

取决于您的要求。 LIKERLIKE 也应该与 SQL 表达式一起使用。

在pyspark中,SparkSql语法:

where column_n like 'xyz%'

可能行不通。

使用:

where column_n RLIKE '^xyz' 

这很好用。