Удаленный пост был почти у цели, но вы имеете дело с RDD типа строки, чтобы применить уменьшение, и у вас есть данные, подобные 120 и 134.4, которые затем имеют проблему с AnyVal с типом строки.
Я предлагаю следующее, учитывающее форматы 123 и 123.5:
case class Employee(first_name:String, job_type:String, salary:Double)
val dfE = spark.createDataFrame(
Seq(Employee("John", "sh_clerk", 20000),
Employee("Peter", "sh_clerk", 60000.0), Employee("Sally", "manager", 50000.0),
Employee("Cabe", "programmer", 100000.0), Employee("Bob", "accountant", 65000.0)
)
)
dfE.show(false)
dfE.printSchema()
dfE.select("salary").rdd.map(row => row.getDouble(0)).reduce(_*_)
, которое в этом случае возвращает без исключений следующее:
res19: Double = 3.9E23
Класс case болеедля формальности - как RDD получает проблему AnyVal.