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

Kno*_*uch 26 scala dataframe apache-spark apache-spark-sql

我使用Spark 1.3.0Spark Avro 1.0.0.我正在使用存储库页面上的示例.以下代码运行良好

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

但是如果我需要查看doctor字符串是否包含子字符串呢?因为我们在字符串中编写表达式.我怎么做"包含"?

zer*_*323 61

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

df.filter($"foo".contains("bar"))
Run Code Online (Sandbox Code Playgroud)

like(SQL与SQL简单正则表达式_匹配任意字符并%匹配任意序列):

df.filter($"foo".like("bar"))
Run Code Online (Sandbox Code Playgroud)

或者rlike(与Java正则表达式一样):

df.filter($"foo".rlike("bar"))
Run Code Online (Sandbox Code Playgroud)

根据您的要求.LIKE并且也RLIKE应该使用SQL表达式.

  • 斯卡拉.要使`$`工作,你需要`import sqlContext.implicits._`.您也可以用`df("foo")`或`org.apache.spark.sql.functions.col("foo")`替换它. (14认同)