Я сейчас практикуюсь на Spark, используя язык Scala.Я использую файл данных с несколькими заголовками, но мне интересно сравнить значения только двух столбцов.Есть несколько тысяч строк с повторяющимися клиентами.Это '[customerID, busID, date_travel, Firstname, Lastname]'
Меня интересует сравнение обоих customerID и busID всех клиентов в таблице и создание столбца, в котором указывается количество экземпляров дваклиенты были в одном автобусе.Каждая поездка на автобусе имеет уникальный идентификатор.
Я успешно загрузил файл данных в spark, создал фрейм данных и создал новое значение: Пример фрейма данных:
val exampleInputDF = Seq(("20185","344","01/06/2019","John","Smith"),("20186","344","01/06/2019","Jack","Sparrow"),("20187","344","01/06/2019","John","Wick")).toDF("customerID", "busID","date_travel","Firstname","Lastname")
+----------+-----+-----------+---------+--------+
|customerID|busID|date_travel|Firstname|Lastname|
+----------+-----+-----------+---------+--------+
| 20185| 344| 01/06/2019| John| Smith|
| 20186| 344| 01/06/2019| Jack| Sparrow|
| 20187| 344| 01/06/2019| John| Wick|
+----------+-----+-----------+---------+--------+
val commonjourneys = spark.sql("SELECT customerID,busID, from data_table ORDER BY busID")
Затем я подумываю использовать функции Window для созданияновый столбец, но я не понимаю, как я смогу сравнить каждое из значений.Раньше у меня было бы .filter($"customerID" = "BUS ID")
для постоянного значения, но теперь значения постоянно меняются.Я думаю, что мог бы использовать функцию IF, но не уверен, где начать реализовывать это.Кроме того, чтобы ограничить вывод, я только ищу случаи, когда есть> 2 поездки на автобусе вместе.
Мой вывод в идеале должен иметь 3 столбца - [customerID - Passenger1, customerID - Passenger 2, number_of_journeys_together]
Кто-нибудь знает, какподходите к решению подобных проблем и к любой функциональности, имеющейся в Scala / Spark, которая может помочь выполнить это самым простым способом.