Spark SQL喜欢查找包含尾随数字的所有字符串

时间:2017-04-08 00:34:38

标签: sql regex apache-spark apache-spark-sql pyspark-sql

在从数据框架查询时,我尝试使用rlike但没有取得多大成功。

示例数据:

column_a|column_b
1|abc xyz
2|123 abc xyz
3|abc 123 xyz
4|abc 123
5|xyz 123

预期产出:

column_a|column_b
4|abc 123
5|xyz 123

我试过了:

select * from table_1 where column_b rlike '\d+$' (select * from table_1 where column_b rlike '/\d+$')

输出(无结果):

column_a|column_b

我也试过了:

select * from table_1 where column_b rlike '\d*$' (select * from table_1 where column_b rlike '/\d*$')

输出(所有行):

column_a|column_b
1|abc xyz
2|123 abc xyz
3|abc 123 xyz
4|abc 123
5|xyz 123

我的正则表达式是不正确的?我已经使用python和在线测试器进行了测试,看起来是正确的。或者rlike是否支持某些特定的正则表达式?

1 个答案:

答案 0 :(得分:3)

你需要更多的逃避才能让它发挥作用。特别是:

spark.sql("SELECT 'abc 123' RLIKE '\\\\d+$'").show()
+------------------+
|abc 123 RLIKE \d+$|
+------------------+
|              true|
+------------------+
spark.sql("SELECT '123 abc xyz' RLIKE '\\\\d+$'").show()
+----------------------+
|123 abc xyz RLIKE \d+$|
+----------------------+
|                 false|
+----------------------+