import org.apache.flink.api.scala._object SumCount { def main(args: Array[String]): Unit = { // 第1步:建立执行环境 val env = ExecutionEnvironment.getExecutionEnvironment // 第2步:创建数据源 val data = env.readTextFile("path/to/file") .map(line => { val fields = line.split(",") (fields(0), fields(1).toDouble) }) // 第3步:对数据集指定转换操作 val sums = data .groupBy(0) // 按照第1个元素分组 .sum(1) // 对第2个元素求和 // 第4步:输出结果 sums.print() }}
时间: 2024-04-06 09:28:22 浏览: 37
Apache Flink(flink-1.14.4-bin-scala_2.12.tgz)
5星 · 资源好评率100%
这段代码使用 Flink 来读取指定文件中的数据,然后对数据进行分组和求和操作,并将结果打印出来。具体来说,它执行了以下步骤:
1. 建立执行环境
使用 `ExecutionEnvironment.getExecutionEnvironment` 方法建立一个执行环境。这个执行环境是所有 Flink 任务的上下文,包含了各种配置信息和资源分配等参数。
2. 创建数据源
使用 `env.readTextFile("path/to/file")` 方法从指定文件中读取数据,并返回一个 `DataSet` 对象。这个 `DataSet` 包含了文件中的所有数据行,每行都是一个字符串。
3. 对数据集指定转换操作
使用 `map` 方法对每一行数据进行转换,将其转换为一个二元组 `(String, Double)`。其中第一个元素是字符串类型,表示数据的类别,第二个元素是双精度浮点数类型,表示数据的值。然后使用 `groupBy` 方法按照第一个元素进行分组,使用 `sum` 方法对第二个元素进行求和。
4. 输出结果
使用 `print` 方法将结果打印出来,这样就可以在控制台上看到分组求和后的结果。
需要注意的是,这段代码使用的是 Flink 的 Batch API,适用于处理有限的、持久化的数据集,而不是无限流数据。如果你需要处理无限流数据,请使用 Flink 的 Streaming API。
阅读全文