У меня есть набор данных, состоящий из (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)
и/или самосоединение), но они являются чрезмерно дорогостоящими по сложности.