Я хочу рассчитать разницу во времени между входом и выходом для каждого идентификатора. Данные в формате:Распаковать список, развернуть и рассчитать разницу
String,Long,String,List[String]
======================================
in, time0, door1, [id1, id2, id3, id4]
out, time1, door1, [id1, id2, id3]
out, time2, door1, [id4, id5]
В конце концов он должен закончить с пар ключ-значение, как:
{(id1, #time1-time0), (id2, #time1-time0), (id3, #time1-time0), (id4, #time2-time0), (id5, N/A)}
Что бы хороший подход для решения этой проблемы?
EDIT: Я пробовал следующее.
case class Data(direction: String, time:Long, door:String, ids: List[String])
val data = sc.parallelize(Seq(Data("in", 5, "d1", List("id1", "id2", "id3", "id4")),Data("out", 20, "d1", List("id1", "id2", "id3")), Data("out",50, "d1", List("id4", "id5"))))
data.flatMap(x => (x.ids, x))
Я вижу тег apache-spark. Вы ищете способ сделать это с помощью Spark? Сколько у вас данных? –
Я хочу увидеть какой-то код .... что ты пробовал ...? –
Да, я хочу сделать это с помощью Spark. У меня нет данных. Я просто хочу изучить Spark, но решение должно работать с миллионами строк. – user684322