Scala Spark: объединить два кадра данных на основе значения ближайшего ключа - PullRequest
0 голосов
/ 21 апреля 2020

Я работаю с двумя фреймами данных, ни один из которых не достаточно мал, чтобы транслировать, и я пытаюсь присоединиться к ним на основе ближайшего времени (с допуском в один день)

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, и я был бы признателен за помощь, если кто-то уже работал над этим

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...