Пример:
val surveyDF = List(
("I like pizza"),
("I love French fries"),
("Milkshake is so cute"),
("Icecream is yummy")
).toDF("survey")
val items = List("piz.*", "Ice.*")
Я хотел бы узнать, сколько таких, как пицца и мороженое.
С помощью функции rlike , доступной в apache spark, Я могу получить результат
val resutl = surveyDF
.withColumn(
"contains_items",
col("survey").rlike(items.mkString("|"))
)
.show(truncate = false)
Результаты:
+-------------------+-------------------+
|survey |contains_items |
+-------------------+-------------------+
|I like pizza |true |
|I love French fries|false |
|Milkshake is cute |false |
|Ice cream is yummy |true |
+-------------------+-------------------+
Как мы знаем, rlike вернет только true или false , я хотел знать, есть ли любая опция, чтобы получить , какое регулярное выражение выполняется в true ,
Ожидаемые результаты:
+-------------------+-------------------+----------+
|survey |contains_items |regex |
+-------------------+-------------------+----------+
|I like pizza |true |piz.* |
|I love French fries|false |null |
|Milkshake is cute |false |null |
|Icecream is yummy |true |Ice.* |
+-------------------+-------------------+----------+