Мне нужно было использовать собственный класс в Scala для ключа в паре ключ/значение. В частности, у меня есть простой класс, который содержит две переменные id1
и id2
, и я хочу, чтобы элементы были сгруппированы только на основе id2
, а не id1
. Я не мог найти какую-либо информацию в Интернете о том, как и где вы можете переопределить метод сравнения для метода reduceByKey()
, чтобы он мог группировать элементы с тем же ключом на основе моего настраиваемого метода compare()
.Spark: метод сравнения пользовательских ключей для reduceByKey
Любая помощь приветствуется. Спасибо.
Что-то, о чем я должен был упомянуть - после сопоставления мне нужен ключ, чтобы оставаться в качестве моего пользовательского объекта, содержащего id1 и id2, потому что, хотя мне нужно, чтобы они были сгруппированы по id2, мне нужно, чтобы id1 оставался на месте, потому что я позже переназначил и перегруппировал значения на основе id1. Я верю, что вы предложили выбросить id1? – Sasha
Я обновил пример, чтобы передать 'id1'. Вы обязательно выбрасываете некоторые 'id1', но подумайте, что произойдет, если у вас есть две записи с тем же' id2', но с разными 'id1' s? Вы можете получить только один элемент (потому что вы их объединяете, так как они имеют одинаковый идентификатор id2), поэтому вы получите только один идентификатор «id1». – lmm