Как написать Regex In Spark SQL Spark 1.6 с помощью Scala - PullRequest
0 голосов
/ 30 октября 2019

Spark 1.6 с scala

я пытаюсь выполнить регулярное выражение в spark sql.

В Spark Dataframe один из столбцов содержит значение типа

COLA

A0001

B5678

""

NULL

0012A6

B12345678

Я пытаюсьОтфильтруйте все записи, в которых значения colA не начинаются с буквы, за которой следует 4-значное число.

Вывод будет выглядеть как

""

NULL

0012A6

B12345678

Поскольку это недопустимое число.

iпопробовал это в mssql как

[a-zA-Z]{2}\d{4}

Как мы можем реализовать в Spark sql. Пожалуйста, поделитесь своим предложением.

Спасибо

Ответы [ 2 ]

0 голосов
/ 30 октября 2019

Отрицание простого условия Regex с использованием rlike должно быть всем, что вам нужно:

val df = Seq("A0001", "B5678", "", null, "0012A6", "B12345678").toDF("c1")

df.where($"c1".isNull || ! $"c1".rlike("^[A-Za-z]\\d{4}$")).show
// +---------+
// |       c1|
// +---------+
// |         |
// |     null|
// |   0012A6|
// |B12345678|
// +---------+
0 голосов
/ 30 октября 2019

Вы захотите использовать rlike на вашем фрейме данных

df.filter($"COLA".rlike("[a-zA-Z]{2}\d{4}"))
...