Как найти количество фраз из фрейма данных в spark scala? - PullRequest
0 голосов
/ 23 апреля 2019

Как найти количество слов в столбце во фрейме данных?

Я пытаюсь найти количество слов в столбце Комментарии снизу DF

CustID -  Comments

101    [[Nice one, Nice One,Nice]]

102    [[This was nice, Nice]

Воткод, который я пытаюсь достичь, приведенный выше вариант использования

val result = DF1.withColumn("Count of comments ",  DF1("Comments")).map(events => (events,1)).reduce

Здесь я не могу применить функцию «reduByKey» поверх кортежа, и только функция «уменьшить» перечисляет

Здесьожидаемый результат, который я пытаюсь достичь

CustID  -   Comments                      -  Count of comments**
101         [[Nice one, Nice One,Nice]]      Nice one 2, Nice 1
102         [[This was nice, Nice]           This was nice 1, Nice

Может ли кто-нибудь помочь мне и дать правильное предложение для достижения вышеуказанного результата?

1 Ответ

0 голосов
/ 23 апреля 2019

Пожалуйста, найдите решение здесь:

Исходные данные Выглядит так после обрезки скобок:

+------+----------------------+
|CustID|Comments              |
+------+----------------------+
|101   |Nice one,Nice One,Nice|
|102   |This was nice, Nice   |
+------+----------------------+

Код выглядит так:

  def countElments(row: Row): Row =
  {
    val str:String = row.getAs[String]("Comments")
    val list=str.split("\\,").map(_.toLowerCase()).toList
    val newCol=list.groupBy(identity).mapValues(_.size).mkString(",")
    Row.merge(row, Row(newCol))
  }

val rdd=df.rdd.map(row =>countElments(row))
val newSchema=df.schema.add("Count of comments", StringType, true)
val final_df=spark.createDataFrame(rdd, newSchema)
final_df.show(false)

вывод выглядит так:

+------+----------------------+-----------------------------+
|CustID|Comments              |Count of comments            |
+------+----------------------+-----------------------------+
|101   |Nice one,Nice One,Nice|nice -> 1,nice one -> 2      |
|102   |This was nice, Nice   |this was nice -> 1, nice -> 1|
+------+----------------------+-----------------------------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...