Распределение текста по количеству слов в Spark Java - PullRequest
0 голосов
/ 17 марта 2019

Я новичок в Spark, извините, если этот вопрос кажется вам легким. Я пытаюсь найти решение, подобное Spark, но не могу придумать, как это сделать.

Мой DataSet выглядит следующим образом:

+----------------------+
|input                 |
+----------------------+
|debt ceiling          |
|declaration of tax    |
|decryption            |
|sweats                |
|ladder                |
|definite integral     |

Мне нужно рассчитать распределение строк по длине, например:

1-й вариант:

  • 500 строк содержат 1 и более слов
  • 120 строк содержат 2 и более слов
  • 70 строк содержат 2 и более слов

2-й вариант:

  • 300 строк содержат 1 слово
  • 250 строк содержат 2 слова
  • 220 строк содержат 3 слова
  • 270 строк содержат 4 и более слов

Есть ли возможное решение с использованием функций Java Spark? Все, что я могу придумать, - это написать какой-то UDF, который будет иметь вещательный счетчик, но я, вероятно, что-то упускаю, так как должен быть лучший способ сделать это в искре.

1 Ответ

0 голосов
/ 17 марта 2019

Добро пожаловать в ТАК!

Вот решение в Scala, которое вы можете легко адаптировать к Java.

val df = spark.createDataset(Seq(
  "debt ceiling", "declaration of tax", "decryption", "sweats"
)).toDF("input")

df.select(size(split('input, "\\s+")).as("words"))
  .groupBy('words)
  .count
  .orderBy('words)
  .show

Это производит

+-----+-----+
|words|count|
+-----+-----+
|    1|    2|
|    2|    1|
|    3|    1|
+-----+-----+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...