(disclaimer : je suis toujours débutant en Scala)
On sent quand même que c'est bâti sur du Java. Le système de packaging est loooooooooooourd (et il faut télécharger internet pour la compilation), d'ailleurs l'auteur de SBT a le sens de l'humour (
Simple Build Tool, ahaha), on a des trucs un peu curieux : tout est objet et tout le monde hérite de Any, notamment les sous-classes AnyRef et AnyVal. Et que retrouve-t-on dans AnyVal ? uniquement Int, Long, Char… bref les types primitifs de Java.
Encore quelques trucs pénibles : quand une méthode n'a pas d'argument (genre toString()), les parenthèses sont facultatives. Du coup, dur de faire la différence entre la méthode x.toString et l'appel à la méthode x.toString…
Seules les classes statiques peuvent avoir des méthodes statiques. Hors de question d'avoir des méthodes statiques dans une classe non statique…
L'importation est bizarre :
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.rdd.RDD
la seconde ligne permet d'importer tous les symboles définis dans SparkContext.
Si je l'utilise pas, la classe RDD ne dispose pas de la méthode reduceByKey. Et oui, c'est logique, importer un module permet d'ajouter des méthodes à une classe qui est définie dans un autre module…

Naturellement, l'IDE est incapable de le trouver (faut dire que ce n'est pas très intuitif). À propos d'IDE, ça m'est arrivé d'avoir un code qui ne compile pas alors que l'IDE ne me signale aucun problème
