У меня есть набор данных, состоящий из (sensor_id, timestamp, data) (sensor_id - идентификаторы IoT-устройств, отметка времени - это UNIX-время, а данные - это хеш MD5 их вывода в то время). В таблице нет первичного ключа, но каждая строка уникальна.
Мне нужно найти все пары sensor_id s1 и s2, так что эти два датчика имеют как минимум n (n=50) записи (timestamp, data), общие между ними, т.е. на n different в случаях, когда они выдавали одни и те же данные за одну и ту же метку времени.
Для ощущения величин данных у меня есть 10B строк и ~ 50M различных sensor_ids, и я считаю, что существует около ~ 5M пар датчиков, которые излучали одни и те же данные на одной отметке времени не менее 50 раз.
Какой лучший способ сделать это в Spark? Я пробовал различные подходы (group-by (timestamp, data) и/или самосоединение), но они являются чрезмерно дорогостоящими по сложности.