FLink13--KeyByMaxByApp
一、依赖
https://www.cnblogs.com/robots2/p/16048648.html
二、代码
package net.xdclass.class9;
import java.util.Date;
import org.apache.flink.api.common.RuntimeExecutionMode;
import org.apache.flink.api.common.functions.ReduceFunction;
import org.apache.flink.api.java.functions.KeySelector;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.datastream.KeyedStream;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import net.xdclass.model.VideoOrder;
/**
* @desc reduce算子,和sum类似,sum做简单聚合,reduce做复杂聚合
* aggregate支持更复杂聚合
*
* max和maxBy,max存在一些坑,max不确定哪个key被选中了。并行度不为1的话,可能出现错误
*
* @menu
*/
public class FLink13KeyByMaxByApp {
public static void main(String[] args) throws Exception{
//WebUi方式运行
// final StreamExecutionEnvironment env =
// StreamExecutionEnvironment.createLocalEnvironmentWithWebUI(new Configuration());
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
//设置运行模式为流批一体
env.setRuntimeMode(RuntimeExecutionMode.AUTOMATIC);
//并行度
// env.setParallelism(1);
//设置为自定义source
// DataStream<VideoOrder> ds = env.addSource(new VideoOrderSourceV2());
DataStream<VideoOrder> ds = env.fromElements(
new VideoOrder("1", "springboot", 10,1001, new Date()),
new VideoOrder("2", "springboot", 11,1005, new Date()),
new VideoOrder("3", "springboot", 12,1009, new Date()),
new VideoOrder("4", "微服务SpringCloud", 20,1010, new Date()),
new VideoOrder("5", "微服务SpringCloud", 21,1011, new Date()),
new VideoOrder("6", "Redis教程", 30,1001, new Date()),
new VideoOrder("7", "Redis教程", 31,1020, new Date()),
new VideoOrder("8", "Redis教程", 32,1030, new Date()),
new VideoOrder("9", "Linux教程", 40,1001, new Date()));
//根据title做分组
KeyedStream<VideoOrder, Object> keyByDs = ds.keyBy(new KeySelector<VideoOrder, Object>() {
@Override
public Object getKey(VideoOrder videoOrder) throws Exception {
return videoOrder.getTitle();
}
});
SingleOutputStreamOperator<VideoOrder> moneyMaxBy = keyByDs.maxBy("money");
moneyMaxBy.print();
//DataStream需要调用execute,可以取个名称
env.execute("money map job");
}
}
FLink13--KeyByMaxByApp的更多相关文章
- flink-cdc实时同步mysql数据到elasticsearch
本文首发于我的个人博客网站 等待下一个秋-Flink 什么是CDC? CDC是(Change Data Capture 变更数据获取)的简称.核心思想是,监测并捕获数据库的变动(包括数据 或 数据表的 ...
- flink-cdc同步mysql数据到kafka
本文首发于我的个人博客网站 等待下一个秋-Flink 什么是CDC? CDC是(Change Data Capture 变更数据获取)的简称.核心思想是,监测并捕获数据库的变动(包括数据 或 数据表的 ...
- flink-cdc同步mysql数据到hbase
本文首发于我的个人博客网站 等待下一个秋-Flink 什么是CDC? CDC是(Change Data Capture 变更数据获取)的简称.核心思想是,监测并捕获数据库的变动(包括数据 或 数据表的 ...
- flink-cdc同步mysql数据到hive
本文首发于我的个人博客网站 等待下一个秋-Flink 什么是CDC? CDC是(Change Data Capture 变更数据获取)的简称.核心思想是,监测并捕获数据库的变动(包括数据 或 数据表的 ...
随机推荐
- go get 和 go install 对比
(一)命令定义和区别 go install 和 go get 都是 Go 语言的工具命令,但它们之间有一些区别. go get:用于从远程代码存储库(如 GitHub)中下载或更新 Go 代码包.它会 ...
- C#向JAVA发送form-data文件问题处理方案
前言 和上一篇文章一样,.NET 和 JAVA之间的接口请求又遇到了新问题 我们有一个用来接收文件的接口,外部把文件流.文件名.目录,传进来,我们系统把生成的附件ID反回去,接口为POST-form- ...
- COSBrowser 文件对比——更实用的文件管理功能
我们在使用 COSBrowser 来管理腾讯云存储的文件时,目前我们大家所熟知的上传/下载方式,主要有以下三种: 通过点击按钮上传/下载 通过拖拽的形式进行上传/下载 通过 URL 链接进行上传/下载 ...
- Element Plus组件库el-select组件多选回显踩坑
前情 公司有经常需要做一些后台管理页面,我们选择了Element Plus,它是基于 Vue 3,面向设计师和开发者的组件库,是Vue框架生态中比较火的UI组件库,组件库丰富易用,组件链接:一个 Vu ...
- JEP 457 Java 22:Class-File API
查看 Java 22:Class-File API | 作者:Ben Weidig | 2024 年 4 月 | Medium 终于有一个和 DLR 相当的官方库了.
- javac 无效的目标发行版: 11
maven编译出错. JAVA_HOME 设置成了 jdk8,此时 runner 选 11 也是没用的,务必再覆盖掉 JAVA_HOME.
- 在TOMCAT8.5使用 JOSSO 单点登录(Agent 端)
网上找到的玩法都是用 josso 给的命令行工具加工 tomcat,这个办法有不少问题: 1. tomcat8.5 还不支持 2. 很难配置,这让我险些放弃 tomcat8.5,用 tomcat8,但 ...
- qemu/kvm
<domain type="kvm"> <name>win7</name> <uuid>e31c1621-b3c3-42ed-be3 ...
- File was changed on disk
刚开始从eclipse转到idea,发现idea从svn同步代码后,点开一个java类报错 说是某个方法不存在,以为是别人代码没有提全,就点到别人代码里面去看,顶行出现"File was c ...
- Qt编写安防视频监控系统22-摄像机搜索
一.前言 摄像机搜索模块是后面新增加的,这个模块很有必要,一开始做视频监控系统的时候,那时候还没有研究出来一套纯Qt底层通信的onvif类,也就前几个月搞出来了,支持搜索设备信息和云台控制,所以马上加 ...