Сначала я не уверен, что делает эта строка,
lazy val li = (li1, li2).zipped.map(_ :: _)
Вместо этого вы можете сделать это,
lazy val li = li2 zip li1
Это создаст список кортежей типа (Int, List [Double]).
И решение для нахождения средних значений по ключам может быть таким, как показано ниже:
rdd.map{ x => (x._1, x._2.fold(0.0)(_ + _)/x._2.length) }.collect.foreach(x => println(x._1+" => "+x._2))