Добавить столбец, сохраняя соотношение существующих столбцов в Apache Spark Scala - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть фрейм данных с обзором и рейтингом колонок в Spark Scala

val stopWordsList = scala.io.Source.fromFile("stopWords").getLines.toList
val downSampleReviewsDF = sqlContext.sql("SELECT review, rating FROM ds");

Я написал функцию, которая удалит стоп-слова из данного обзора (строка)

def cleanTextFunc(text: String, removeList: List[String]): String = removeList.fold(text) {
case (text, termToRemove) => text.replaceAll("\\b" + text + "\\b" , "").replaceAll("""[\p{Punct}&&[^.]]""", "").replaceAll(" +", " ")

}

Как добавить еще один столбец "new_review" вместе с обзором и рейтингом.New_review должен использовать cleanTextFunc () для получения очищенных данных для каждой строки.cleanTextFunc принимает два входных аргумента: 1. текст для очистки 2. Список стоп-слов, которые нужно удалить из текста

В выводе должен быть текст |Рейтинг |NEW_TEXT

1 Ответ

0 голосов
/ 21 ноября 2018

Еще несколько строк

// Curried method to create UDF from removeList
def getStopWordRemoverUdf(removeList: List[String]): UserDefinedFunction = {
  udf { (text: String) =>
    cleanTextFunc(text, removeList)
  }
}

// Create UDF by passing your removeList
val stopWordRemoverUdf: UserDefinedFunction = getStopWordRemoverUdf(removeList)

// Use UDF to create new column
val cleanedDownSampleReviewsDf: DataFrame = downSampleReviewsDF.withColumn("new_review", stopWordRemoverUdf(downSampleReviewsDF("review")))

Ссылки

...