2017-01-20 4 views
0

Я пытаюсь реализовать запрос в моем коде Scala, который использует regexp на Spark Column, чтобы найти все строки в столбце, которые содержат определенное значение:Использование rlike в org.apache.spark.sql.Column

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

str является строка, которая может быть что угодно (кроме null или empty).

Это отлично подходит для основных запросов, которые я тестирую. Однако, будучи новичком в 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 

 Смежные вопросы

  • Нет связанных вопросов^_^