2017-01-20 31 views
0

我想在我的Scala代碼中實現一個查詢,該代碼在Spark Column上使用正則表達式來查找列中包含特定值的所有行,例如:在org.apache.spark.sql.Column中使用rlike

column.rlike(".*" + str + ".*") 

str是一個字符串,可以是任何東西(除了nullempty)。

這適用於我正在測試的基本查詢。然而,作爲Spark/Scala的新手,我不確定是否有任何特殊情況可能會破壞我需要處理的代碼。是否有我需要逃避的特殊字符或需要擔心的特殊情況?

回答

1

這可以被任何無效的正則表達式打破。你甚至不需要去努力:

Seq("[", "foo", " ba.r ").toDF.filter($"value".rlike(".*" + "[ " + ".*")).show 

或可以產生意外的結果,如果str是一個不平凡的模式本身。對於這種簡單的情況,你會更好用Column.contains

Seq("[", "foo", " ba.r ").toDF.filter($"value".contains("[")).show 
Seq("[", "foo", " ba.r ").toDF.filter($"value".contains("a.r")).show 
相關問題