激发如何沿一列累计执行乘法

时间:2018-10-20 04:46:16

标签: apache-spark apache-spark-sql

这里是spark中的dataFrame

public boolean onTouch(View v, MotionEvent event) {
        //your code here 

        //Return false is the trick 
        return false;

我想要做的是:对于第一列的所有行,将它们累加起来,即+------+----+---+ | Close|sell|buy| +------+----+---+ | 314.6| 0| 1| | 120| 1| 0| | 192| 0| 1| |199.46| 1| 0| |255.05| 0| 1| |250.52| 1| 0| |252.53| 0| 1| |245.32| 1| 0| ----------------- ,我想得到最终值。

1 个答案:

答案 0 :(得分:1)

已删除的帖子几乎在那儿,但是您正在处理行类型的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

案例类更多是出于形式上的考虑-RDD遇到了AnyVal问题。