一、代码模板

VideoOrder.java

package net.xdclass.model;

import java.util.Date;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor; /**
* 订单信息
**/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class VideoOrder {
private String tradeNo;
private String title;
private int money;
private int userId;
private Date createTime;
}

自定义source,生产测试数据用  VideoOrderSource.java

package net.xdclass.class6.source;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;
import java.util.UUID; import org.apache.flink.configuration.Configuration;
import org.apache.flink.streaming.api.functions.source.RichParallelSourceFunction; import net.xdclass.model.VideoOrder; /**
* @author wangshida@baijia.com
* @datetime 2022-03-20 下午12:03
* @CopyRight (C) 百家互联
* @desc 自定义数据源
* @menu
*/
public class VideoOrderSource extends RichParallelSourceFunction<VideoOrder> {
//把该变量声明为volatile(不稳定的),这就指示JVM,这个变量是不稳定的,每次使用它都到主存中进行读取,而不是从缓存读取
private volatile Boolean flag = true; private Random random = new Random(); private static List<String> list = new ArrayList<>();
static {
list.add("spring boot2.x");
list.add("SpringCloud");
list.add("RabbitMQ");
list.add("Kafka");
list.add("mianshi");
list.add("FlinkStream");
list.add("Linux");
} @Override
public void open(Configuration parameters) throws Exception {
// super.open(parameters);
System.out.println("自定义source,数据生产open---------");
} @Override
public void close() throws Exception {
// super.close();
System.out.println("自定义source,数据生产close---------");
} @Override
public void run(SourceContext<VideoOrder> ctx) throws Exception {
while (flag){
Thread.sleep(1000);
String id = UUID.randomUUID().toString();
int userId = random.nextInt(10);
int money = random.nextInt(100);
int videoNum = random.nextInt(list.size());
String title = list.get(videoNum);
VideoOrder videoOrder = new VideoOrder(id,title,money,userId,new Date());
ctx.collect(videoOrder);
}
} /**
* 结束时候执行
*/
@Override
public void cancel() {
flag = false;
System.out.println("关闭");
}
}

使用自定义数据源,代码demo,FLink04CustomSourceApp.java

package net.xdclass.class6.app;

import org.apache.flink.api.common.RuntimeExecutionMode;
import org.apache.flink.api.common.functions.FilterFunction;
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.environment.StreamExecutionEnvironment; import net.xdclass.class6.source.VideoOrderSource;
import net.xdclass.model.VideoOrder; /**
* @author wangshida@baijia.com
* @datetime 2022-03-20 下午6:22
* @CopyRight (C) 百家互联
* @desc
* @menu
*/
public class FLink04CustomSourceApp { 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()); //过滤
DataStream<VideoOrder> dfFliter = ds.filter(new FilterFunction<VideoOrder>() {
@Override
public boolean filter(VideoOrder videoOrder) throws Exception {
return videoOrder.getMoney() > 10;
}
}).setParallelism(3); dfFliter.print().setParallelism(4); //设置名字
env.execute("CustomSourceApp");
}
}

FLink自定义Source,不停生产数据的更多相关文章

  1. Flink 自定义source和sink,获取kafka的key,输出指定key

    --------20190905更新------- 沙雕了,可以用  JSONKeyValueDeserializationSchema,接收ObjectNode的数据,如果有key,会放在Objec ...

  2. 4、flink自定义source、sink

    一.Source 代码地址:https://gitee.com/nltxwz_xxd/abc_bigdata 1.1.flink内置数据源 1.基于文件 env.readTextFile(" ...

  3. flink1.7自定义source实现

    flink读取source data 数据的来源是flink程序从中读取输入的地方.我们可以使用StreamExecutionEnvironment.addSource(sourceFunction) ...

  4. Flink自定义Sink

    Flink自定义Sink Flink 自定义Sink,把socket数据流数据转换成对象写入到mysql存储. #创建Student类 public class Student { private i ...

  5. Flume自定义Source、Sink和Interceptor(简单功能实现)

    1.Event event是flume传输的最小对象,从source获取数据后会先封装成event,然后将event发送到channel,sink从channel拿event消费. event由头he ...

  6. 【翻译】Flink Table Api & SQL — 自定义 Source & Sink

    本文翻译自官网: User-defined Sources & Sinks  https://ci.apache.org/projects/flink/flink-docs-release-1 ...

  7. flink02------1.自定义source 2. StreamingSink 3 Time 4窗口 5 watermark

    1.自定义sink 在flink中,sink负责最终数据的输出.使用DataStream实例中的addSink方法,传入自定义的sink类 定义一个printSink(),使得其打印显示的是真正的ta ...

  8. flume自定义Source(taildirSource),自定义Sink(数据库),开发完整步骤

    一.flume简单了解推荐网站(简介包括简单案例部署): http://www.aboutyun.com/thread-8917-1-1.html 二.我的需求是实现从ftp目录下采集数据,目录下文件 ...

  9. flink 自定义触发器 定时或达到数量触发

    flink 触发器 触发器确定窗口(由窗口分配程序形成)何时准备由窗口函数处理.每个WindowAssigner都带有一个默认触发器. 如果默认触发器不适合需求,我们就需要自定义触发器. 主要方法 触 ...

  10. Hadoop实战-Flume之自定义Source(十八)

    import java.nio.charset.Charset; import java.util.HashMap; import java.util.Random; import org.apach ...

随机推荐

  1. 解析HTML字符串成AST树

    1. 如何将一个字符传转换成一个AST树结构. 直接上代码: const attribute = /^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:" ...

  2. 【C++】static 知识整理 【静态与局部静态】

    目录 类外 类内 局部静态 local static 类外 类内 类外 C++的静态可以分为两种情况来讨论:在类外和在类内. 对于静态变量/函数,链接将只在内部 (如果不用static,那么在不同文件 ...

  3. (二)Springboot + vue + 达梦数据库构建RBAC权限模型前后端分离脚手架保姆级教程(后端项目)

    XX后台管理系统 Springboot + vue + dm8 的前后端分离项目,后端项目 https://spring.io https://start.aliyun.com 1. 创建项目 初始化 ...

  4. 前端每日一知之BFC

    脑图在线链接 本文内容依据[js每日一题]公众号精彩文章总结而来

  5. 服务迁移之《tomcat性能优化》

    删除无用的connector,因为一般的tomcat前面都会挂有nginx服务 增加connnector使用的线程池的数量 删除没有用的listener host优化项:autoDeploy设置为fa ...

  6. 2024年1月Java项目开发指南9:密码加密存储

    提前声明: 你不会写这加密算法没关系啊,你会用就行. 要求就是:你可以不会写这个加密算法,但是你要知道加密流程,你要会用. @Service public class PasswordEncrypto ...

  7. Windows下,terminal美化、命令行美化

    1. Terminal terminal 比 原生的 cmd 要更加好用 直接去 Micorosoft Store 下载就行了 2. 美化效果图 3. 美化步骤 3.1 需要的插件 git-alias ...

  8. 推荐一个C#轻量级矢量图形库

    推荐一个轻量级矢量图形库,可用于生成 PDF.SVG.PNG等. 01 项目简介 VectSharp 是一个功能强大的 C# 库,专门用于创建矢量图形,包括文本,不依赖任何第三方,支持跨平台运行,包括 ...

  9. 阿里IM技术分享(六):闲鱼亿级IM消息系统的离线推送到达率优化

    本文由阿里闲鱼技术团队逸昂分享,原题"消息链路优化之弱感知链路优化",有修订和改动,感谢作者的分享. 1.引言 闲鱼的IM消息系统作为买家与卖家的沟通工具,增进理解.促进信任,对闲 ...

  10. 前端学习openLayers配合vue3(偏移动画效果,限制范围)

    我们原来的偏移感觉比较生硬,我们来学习一下偏移的动画,先列一下这节的知识点 限制经纬度范围和缩放范围(view层) view = new View({ center:[114.305469,30.59 ...