过滤火花DataFrame上的字符串包含

时间:2016-03-02 22:06:24

标签: scala apache-spark dataframe apache-spark-sql

我正在使用Spark 1.3.0Spark 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字符串是否包含子字符串呢?因为我们在字符串中编写表达式。我怎么做“包含”?

2 个答案:

答案 0 :(得分:52)

您可以使用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表达式一起使用。

答案 1 :(得分:0)

在pyspark,SparkSql语法中:

manylinux1

可能不起作用。

使用:

where column_n like 'xyz%'

这很好用。