Я работаю с двумя фреймами данных, ни один из которых не достаточно мал, чтобы транслировать, и я пытаюсь присоединиться к ним на основе ближайшего времени (с допуском в один день)
val DF1 = sc.parallelize(Array(
("ID1", "2018-02-27T13:47:59.416+01:00", "2018-03-01T16:02:00.632+01:00", "25.13297154663", "55.13297154663"),
("ID2", "2018-02-25T13:47:59.416+01:00", "2018-02-07T16:02:00.632+01:00", "26.13297154663", "55.13297154663"),
("ID3", "2018-02-24T13:47:59.416+01:00", "2018-02-02T16:02:00.632+01:00", "25.13297154663", "55.13297154663")
// ...
)).toDF("ID", "CreationDate","EndDate","Lat1","Lon1")
val DF2 = sc.parallelize(Array(
("2018-02-27T13:47:59.416+01:00","25.13297154663", "55.13297154663"),
("2018-02-27T13:47:59.416+01:00","25.1304663", "54.10663"),
("2018-02-27T13:47:59.416+01:00","25.1354663", "55.132904663")
// ...
)).toDF("DateTime","Lat2","Lon2")
Что самый эффективный способ сделать это присоединиться? Сначала я попытался сделать полное соединение, используя допуск в качестве одного из условий соединения, но это не дает мне только самые близкие времена. Я ищу функциональность, похожую на pandas merge_asof, и я был бы признателен за помощь, если кто-то уже работал над этим