flink求出某一列各类的总值
时间: 2023-07-07 12:44:42 浏览: 140
假设你的数据集是一个二元组 `(className: String, score: Double)` 的集合,你可以使用 Flink 的 `groupBy` 和 `sum` 算子来求出某一列各类的总值。以下是一个示例代码:
```scala
import org.apache.flink.api.scala._
object SumCount {
def main(args: Array[String]): Unit = {
// 第1步:建立执行环境
val env = ExecutionEnvironment.getExecutionEnvironment
// 第2步:创建数据源
val data = env.fromElements(
("classA", 90.0),
("classA", 80.0),
("classB", 70.0),
("classB", 85.0),
("classB", 95.0)
)
// 第3步:对数据集指定转换操作
val sums = data
.groupBy(0) // 按照第1个元素分组
.sum(1) // 对第2个元素求和
// 第4步:输出结果
sums.print()
}
}
```
在这个示例中,我们使用 `fromElements` 方法创建了一个包含 5 个元素的数据集。然后我们使用 `groupBy` 方法按照第1个元素(即班级名称)进行分组,接着使用 `sum` 方法对第2个元素(即分数)进行求和。最后我们使用 `print` 方法输出结果。
如果你的数据集包含更多的列,你可以通过修改 `sum` 方法中的参数来指定求和的列。例如,如果你的数据集包含三个元素 `(className: String, score: Double, age: Int)`,你可以使用 `sum(1)` 来对第2个元素(即分数)进行求和,使用 `sum(2)` 来对第3个元素(即年龄)进行求和。
阅读全文