繁体   English   中英

Java中的Spark SQL选择和减少

[英]Spark sql select and reduce in Java

因此,我有一个名为UserBehavior的类,例如:

public class User_Behavior {
private String userName;
private String itemId;
private double bhvCnt;}

我从Dataset创建了一个Dataset, 想要选择itemId和bhvCnt,然后一起减少所有具有相同itemId的bhvCnt ,我使用Java,所以编写了如下代码:

Dataset<Row> selected=dataset.select("itemId","bhvCnt");
    selected.reduce(new ReduceFunction<Row>() {
        @Override
        public Row call(Row v1, Row v2) throws Exception {
            return new Row(v1.getAs("itemId"),v1.getDouble(1)+v2.getDouble(1));
        }
    });

但是我的IDE提示我Row是抽象的。

编写我想要的代码的正确方法是什么?

您可以在“ itemId”列上使用groupBy ,在“ bhvCnt”列上使用sum ,如下所示。

import static org.apache.spark.sql.functions.col;

Dataset<Row> ds = selected.groupBy(col("itemId")).sum("bhvCnt");
ds.show(false);

编辑

import static org.apache.spark.sql.functions.col;
import static org.apache.spark.sql.functions.sum;

Dataset<Row> ds = selected.groupBy(col("itemId")).agg(sum("bhvCnt").as("sum")).sort(col("sum"));
ds.show(false);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM