введите описание изображения здесь Я довольно новичок в scala и зажигаю, у меня есть текстовый файл в следующем формате.
(E1, "msg1")
(E1, "msg2")
(E1, "msg3")
(B1, "msg4")
Мои требования:
- прочитать данные из текстового файла и преобразовать их в пару значений ключа.
- сгруппировать данные по ключу (здесь ключ - отправитель)
обработать каждую группу, например, если мы берем одну группу, то есть E1, "msg1" E1, "msg2" E1, "msg3"
Итерируем все сообщения по одному и на основе расстояния Левенштейна вычисляем точность между двумя Если точность> 70, то поместите их в одну группу.
, например, G1, Msg1
G1, Msg2
G2, Msg3
вывод я хочу как (E1, Карта (G1, Список [msg1, msg2]))
Мой код такой сейчас:
val rdd=sc.textFile(input)
val rdd1: RDD[(String, String)] =rdd.map(line=>{
val data=line.split(",",2)
(data(0),data(1))
})
val rdd2=rdd1.groupByKey()
val rdd3: RDD[(String, List[String])] =rdd2.map(k=>(k._1,k._2.toList))
rdd3.foreach(println)
val rdd4=rdd3.mapValues((line:List[String])=>{
var mapBuffer:Map[String,List[String]]=Map()
if(mapBuffer.isEmpty) {
val currentline=line(0)
mapBuffer.put()
}
else{
}
}