Explode Key-Values ​​для пары значений ключа scala

ASR RAJ спросил: 10 мая 2018 в 04:48 в: scala

У меня есть 3 строки в качестве входных данных, у которых есть ключ и значения сгруппированы. Теперь вы хотите разгруппировать значения каждой пары значений ключа.

Пример ввода

LKG, LK1, 10, LK2, 20, LK3, 30    
UKG, UK1, 20, UK2, 10, UK5 SRKG, SRK4, 30, SRK10, 5

Ожидаемый результат

LKG,LK1LKG,LK2LKG,LK3UKG,UK1UKG,UK2UKG,UK5SRKG,SRK4SRKG,SRK10


ПРИМЕЧАНИЕ. Целочисленные значения, такие как 10,20,30, не должны иметь ключа -значная пара в выходном файле

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

val data = """
    LKG, LK1, 10, LK2, 20, LK3, 30
    UKG, UK1, 20, UK2, 10, UK5
    SRKG, SRK4, 30, SRK10, 5""".trim    val records = sc.parallelize(data.split('\n'))    val pairs = records.map(x => (x.split(',')(0), x))val groupedRDD = pairs.flatMap{case(k, v)=> v.split(",").map(x => (k, x))}
groupedRDD.collect().foreach(println)

Пожалуйста, предложите, что может быть альтернативным для решения этой проблемы?


1 ответ

Ramesh Maharjan ответил: 10 мая 2018 в 05:09

следующее должно получить желаемый результат

val data = """
LKG, LK1, 10, LK2, 20, LK3, 30
UKG, UK1, 20, UK2, 10, UK5
SRKG, SRK4, 30, SRK10, 5""".trimdata.split("\n").map(_.split(",").filterNot(_.trim.forall(_.isDigit))).flatMap(x => x.tail.map(y => (x(0).trim, y.trim)))

вызов .foreach(println) должен предоставить вам

(LKG,LK1)
(LKG,LK2)
(LKG,LK3)
(UKG,UK1)
(UKG,UK2)
(UKG,UK5)
(SRKG,SRK4)
(SRKG,SRK10)