一、数据源配置

pom文件:https://www.cnblogs.com/robots2/p/16048648.html

二、RichFlatMap代码,输入单行输出多行

package net.xdclass.class9.app;

import org.apache.flink.api.common.RuntimeExecutionMode;
import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.common.functions.MapFunction;
import org.apache.flink.api.common.functions.RichFlatMapFunction;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.util.Collector; import net.xdclass.class6.source.VideoOrderSource;
import net.xdclass.model.VideoOrder; /**
* @desc map算子
* @menu
*/
public class FLink09RichFlatMapApp { 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(2);
// //设置为自定义source
// DataStream<VideoOrder> ds = env.addSource(new VideoOrderSource());
// //转换transformation,标题转成1
// DataStream<Tuple2<String,Integer>> mapDS = ds.map(new MapFunction<VideoOrder, Tuple2<String,Integer>>() {
// @Override
// public Tuple2<String, Integer> map(VideoOrder videoOrder) throws Exception {
// return new Tuple2<>(videoOrder.getTitle(),1);
// }
// }); //设置为固定数据源
DataStreamSource<String> ds = env.fromElements("test1,test2", "test3,test4", "test5,test6"); //String,String是入参类型和出参类型,RichFlatMapFunction 比FlatMapFunction多些功能,
// 可以设置并行度,打开关闭资源
SingleOutputStreamOperator<String> flatMapDS = ds.flatMap(new RichFlatMapFunction<String, String>() {
@Override
public void open(Configuration parameters) throws Exception {
System.out.println("========open");
}
@Override
public void close() throws Exception {
System.out.println("========close");
}
@Override
public void flatMap(String s, Collector<String> out) throws Exception {
String[] arr = s.split(",");
for (String str:arr){
//放到收集器里面,这样可以发送给下个算子
System.out.println(str);
out.collect(str);
} }
});
flatMapDS.print();
//DataStream需要调用execute,可以取个名称
env.execute("flat map job");
}
}

四、RichMap使用,输入单行输出单行

package net.xdclass.class9.app;

import org.apache.flink.api.common.RuntimeExecutionMode;
import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.common.functions.MapFunction;
import org.apache.flink.api.common.functions.RichFlatMapFunction;
import org.apache.flink.api.common.functions.RichMapFunction;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.util.Collector; import net.xdclass.class6.source.VideoOrderSource;
import net.xdclass.model.VideoOrder; /**
* @desc map算子
* @menu
*/
public class FLink09RichMapApp { 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(3);
//设置为自定义source
DataStream<VideoOrder> ds = env.addSource(new VideoOrderSource());
//用的RichMapFunction,比MapFunction多了打开关闭方法
DataStream<Tuple2<String,Integer>> mapDS = ds.map(new RichMapFunction<VideoOrder, Tuple2<String,Integer>>() {
@Override
public void open(Configuration parameters) throws Exception {
System.out.println("========open");
} @Override
public void close() throws Exception {
System.out.println("========close");
} @Override
public Tuple2<String, Integer> map(VideoOrder value) throws Exception {
return new Tuple2<>(value.getTitle(),1);
}
});
mapDS.print();
//DataStream需要调用execute,可以取个名称
env.execute("flat map job");
}
}

FLink09的RichFlatMap和RichMap使用的更多相关文章

  1. mybatis 与 反射

    Mybatis是个优秀的ORM框架,所以它的反射层一定不会让我们失望 图比较大,可以开新页面查看 可以看到,Mybatis对这一块抽象的比较复杂,我们可以看到有几个比较主要的部分:Reflector. ...

  2. Flink(三)【核心编程】

    目录 一.Environment 二.Source 从集合读取数据 从文件读取数据 从kakfa读取数据(常用) 自定义数据源 三.Transform map Rich版本函数 flatMap key ...

  3. ddddd

    项目二阶段总结 账户微服务 短信发送 1.压测发现问题 首先对短信smscomponent的send方法在test单元测试类中测试,不是真的发短信测试,可以建立请求开始和结束的时间戳来确定请求的耗时. ...

随机推荐

  1. Reverse花指令及反混淆

    花指令及反混淆 1.花指令   花指令是反调试的一种基本的方法.其存在是干扰选手静态分析,但不会影响程序的运行.实质就是一串垃圾指令,它与程序本身的功能无关,并不影响程序本身的逻辑.在软件保护中,花指 ...

  2. CVE-2023-31436 数组越界漏洞

    CVE-2023-31436 数组越界漏洞 drawio: CVE-2023-31436.drawio ‍ 漏洞分析 在 qfq_change_class 里面如果用户态没有提供 TCA_QFQ_LM ...

  3. 鸿蒙应用开发从入门到入行 - 篇1:HarmonyOS介绍——带你深入理解鸿蒙特性

    鸿蒙应用开发从入门到入行 第一天 - HarmonyOS介绍 导读:在本篇文章里,您将了解到HarmonyOS是什么,以及有哪些振奋人心的特性.并且猫林老师会在本篇文章里给出结论:鸿蒙必能蚕食安卓份额 ...

  4. 实用干货分享(3)- Git常用操作干货分享

    官方学习地址 https://git-scm.com/book/zh/v2 简单的代码提交流程 1. git status 查看工作区代码相对于暂存区的差别: 2. git add . 将当前目录下修 ...

  5. 在linu系统安装apache全过程(httpd、apr、apr-util、pcre)以及进行相应配置

    1.下载安装包,需要下面3个安装包[root@bes2 apache]# ll总用量 8520-rw-r--r--. 1 root root 1020833 9月 18 17:47 apr-1.5.1 ...

  6. sudo: source: command not found

    在Ubuntu上配置了jdk(非root用户),要使它的配置生效,在执行 sudo source /etc/profile 的时候提示 ,sudo: source: command not found ...

  7. mongodb和spring集成中MongoTemplate的总结是使用方法

    基础实体类@Document(collection="person") class Person{ String id; String name; int age; public ...

  8. Qt通用方法及类库6

    函数名 //判断是否是IP地址 static bool isIP(const QString &ip); //判断是否是MAC地址 static bool isMac(const QStrin ...

  9. 记一次cannot access its superinterface问题的的排查 → 强如Spring也一样写Bug

    开心一刻 昨天在幼儿园,领着儿子在办公室跟他班主任聊他的情况 班主任:皓瑟,你跟我聊天是不是紧张呀 儿子:是的,老师 班主任:不用紧张,我虽然是你的班主任,但我也才22岁,你就把我当成班上的女同学 班 ...

  10. RabbitMQ-限流

    1.简介 为什么要对消费端进行限流? 其实很好理解,比如我们常能接触到的消费场景:春运期间12306火车票的抢购,双11期间的下单等.这些场景都有一个共同点就是都会导致短暂时间内请求数激增,如果我们的 ...