искры scala: подсчет вхождения ключа - пара значений - PullRequest
0 голосов
/ 23 октября 2018

Я новичок в Scala и мне нужна помощь, чтобы выяснить, как подсчитать вхождение значений пары ключей.У меня есть входные текстовые файлы следующим образом:

a: b
b: c
c: a,b,d
d: b,c
e: b

Я хотел посчитать вхождение каждого значения, поэтому это должно быть что-то вроде:

a | b | c| d| e| 
0   4   2  1  0

То, что я думал сделать, эторазбивая каждую строку и каждый ключ, пары значений на что-то вроде этого:

a,b
b,c
c,a
c,b
c,d
d,b
d,c
e,b

, а затем рассчитывают на основе одного и того же ключа.

То, что у меня пока есть:

val links = sc.textFile("input.txt")
 val test = links.flatMap(line => line.split(":").map(row => row.split("\\s+")

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

1 Ответ

0 голосов
/ 23 октября 2018

Вы можете прочитать файл:

val df = spark.read.option("delimiter", ":").csv("/path/to/file").toDF("key", "value")

Разделить записи

import org.apache.spark.sql.functions._

val long = df.withColumn("value", explode(split(trim($"value"), ",")))

И либо агрегировать

long.groupBy("value").count.show

, либо сводную

long.groupBy().pivot($"value").count.show
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...