2017-01-31 4 views
2

Попытка запустить один из апача зажигает пример кодов (https://github.com/apache/spark/blob/master/examples/src/main/scala/org/apache/spark/examples/graphx/AggregateMessagesExample.scala) я получаю следующее сообщение об ошибке компиляцииискру пример обыкновение компилировать

too many arguments for method sendToDst: (msg: (Int, Double))Unit 
[error] Error occurred in an application involving default arguments. 
[error]   triplet.sendToDst(1, triplet.srcAttr) 
[error]      ^
[error] one error found 

Но глядя на mehtods это кажется правильным. Не уверен, что здесь не так.

+0

отправить в DIST ожидает один tuple2 [Int, Double], но вы передаете в Int и Double как два отдельных аргументов – puhlen

ответ

4

Похоже, что метод, который вы вызываете, ожидает один аргумент (Tuple2), и вы передаете 2 аргумента.

Попробуйте

triplet.sendToDst((1, triplet.srcAttr)) 
+0

Спасибо. Tuple отлично работает. Поддерживаются ли классы классов? Или вы предпочтете остаться здесь с примитивами? –

+0

Извините, я не понимаю вопроса. –

+0

Для передачи сообщений с использованием этой функции агрегированных сообщений вы бы предложили использовать классы типа безопасного типа вместо кортежа примитивов? Или вы предпочтете остаться с примитивами по соображениям производительности (меньше создания объектов в JVM) –