Входной фрейм данных
import spark.implicits._
val ds = Seq((1,"play Framwork"),
(2,"Spark framework"),
(3,"spring framework")).toDF("id","subject")
Я мог бы использовать любое регулярное выражение , а функция my должна remove those rows
из кадра данных, соответствующего токену регулярного выражения.
Предположим, что мое регулярное выражение равно ^ play. *, тогда моя функция должна удалить первую строку и выдает следующий результат.
val exp = Seq((2,"Spark framework"),
(3,"spring framework")).toDF("id","subject")
Я думал использовать функцию , как показано ниже
def clearValueUsingRegex(dataFrame: DataFrame, token: String, columnsToBeUpdated: List[String]) = {
Logger.debug(s"Inside clearValueUsingRegex : token :$token , columnsToBeUpdated : $columnsToBeUpdated")
if (isValidRegex(token)) {
columnsToBeUpdated.foldLeft(dataFrame) {
(dataset, columnName) =>
dataset.withColumn(columnName, regexp_replace(col(columnName), token, ""))
}
} else {
throw new NotValidRegularExpression(s"$token is not valid regex.")
}
} * * тысяча двадцать-один
Но проблема с этой функцией заключается в том, что она заменяет только конкретное значение ячейки, а не удаляет всю строку как ожидаемый результат.