Я пытаюсь найти оптимизированный способ генерации списка уникальных пар совпадений. Я попытался сделать это, используя серию плоских карт и различных запросов, но я обнаружил, что плоская карта не слишком сильно работает при работе над миллионами записей. Любая помощь в оптимизации этого будет получена с благодарностью.Оптимизация задач Spark
Набор данных (geohash, id), и я запускаю это на 30 узловых кластерах.
val rdd = sc.parallelize(Seq(("gh5", "id1"), ("gh4", "id1"), ("gh5", "id2"),("gh5", "id3"))
val uniquePairings = rdd.groupByKey().map(value =>
value._2.toList.sorted.combinations(2).map{
case Seq(x, y) => (x, y)}.filter(id =>
id._1 != id._2)).flatMap(x => x).distinct()
voutput = Array(("id1","id2"),("id1","id3"),("id2","id3"))
Спасибо за ответ, что кадры данных обеспечивают любые преимущества производительности соединения в плане перетасовки. – SChorlton
Я не знаю об этом, но он более эффективен, чем стандартная совместная группа 'join' на RDD. – zero323
Спасибо, что я немного изменил версию, чтобы сначала отсортировать ключи, чтобы поисковые запросы с большей вероятностью выполнялись локально. Предполагаю, что Spark будет выглядеть локально первым? – SChorlton