【Flink】Flink水印机制与快照机制
Flink 中的水印操作问题引入流处理中的乱序问题当 flink 以 EventTime 模式处理流数据时,它会根据数据里的时间戳来处理基于时间的算子。
但是由于网络、分布式等原因,会导致数据乱序的情况。
watermark解决乱序问题不以事件时间作为触发计算的条件,而是根据Watermark判断是否触发。
当Watermark的时间戳等于Event中携带的EventTime时候,上面场景(Watermark=EventTime)的计算结果如下:
Watermark=EventTime
Watermark = EventTime -5s如果想正确处理迟来的数据可以定义Watermark生成策略为 Watermark = EventTime -5s, 如下:
基于SQL的水印实现场景:
使用Socket模拟接收数据
设置WaterMark,设置的逻辑:在第一条数据进来时,设置WaterMark为0,指定第一条数据的时间戳后,获取该时间戳与当前 WaterMark的最大值,并将最大值设置为下一条数据的WaterMark,以此类推
12345 ...
【Sql】SQL经典10题
准备工作12345show databases ;create database if not exists db;use db;-- 一些语句会走 MapReduce,所以慢。 可以开启本地化执行的优化。set hive.exec.mode.local.auto=true;-- (默认为false)
访问量统计准备数据+需求分析12345678910111213141516171819202122232425CREATE TABLE db.test1 ( userId string, visitDate string, visitCount INT ) ROW format delimited FIELDS TERMINATED BY "\t";INSERT overwrite TABLE db.test1VALUES ( 'u01', '2017/1/21', 5 ), ( 'u02', '2017/1/23', 6 ), ( 'u03 ...
【数据治理】华为数据治理案例
数据治理思考数据问题:
数据管理责任不清晰,造成数据问题无人决策解决;
数据多源头,造成数据不一致,不可信;
数据大量搬家造成IT重复投资;
数据无定义造成难于理解、难于使用;
各部门发布报告,统计口径不一致,困扰业务决策;
数据形态多样化,数据量迅猛增长,数据处理逻辑复杂,投资大;
华为在数字化转型过程中,解决了上述问题,因为华为认识到只有建立了完整的数据治理体系,保证数据内容的质量,才能够真正有效地挖掘企业内部的数据价值,对外提高竞争力。
数据治理模块域数据治理主要专注于如下模块域:
数据集成
数据集成用来完成数据入湖动作,不是简单的数据搬家,而是按照一定的方法论 进行数据备份。数据入湖的前提条件是满足6项数据标准,包括:明确数据 Owner、发布数据标准、定义数据密级、明确数据源、数据质量评估、元数据注 册。此标准由数据代表在入湖前完成梳理并在数据治理平台上进行资产注册。
数据标准
数据标准管理着重建立统一的数据语言,L1到L5数据层级业务对象的定义是数据
标准的载体,并对应发布包括L1到L5数据层级的数据标准。各业务对象对应物理
实现的IT系统 ...
【Flink】FlinkSQL及Flink四大基石
Flink SQL基本介绍实操FlinkSQL启动!!1234# 先启动集群/export/server/flink-1.15.2/bin/start-cluster.sh# 再启动客户端/export/server/flink-1.15.2/bin/sql-client.sh
设置输出模式设置输出模式:我一般用的是tableau模式.
123456# 表格模式(table mode)在内存中实体化结果,并将结果用规则的分页表格可视化展示出来。执行如下命令启用:SET sql-client.execution.result-mode=table;# 变更日志模式(changelog mode)不会实体化和可视化结果,而是由插入(+)和撤销(-)组成的持续查询产生结果流:SET sql-client.execution.result-mode=changelog;# Tableau模式(tableau mode)更接近传统的数据库,会将执行的结果以制表的形式直接打在屏幕之上:SET sql-client.execution.result-mode=tableau;
全心全意写SQ ...
【Flink】Flink算子及分区概念
粥所周知, Flink程序由四部分构成, 运行环境 + Source + Transformation + Sink.
接下来一个个说.
运行环境批处理
获取批处理执行环境(用于测试/生产)
1ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
流处理
获取流式处理执行环境(用于测试/生产)
1StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
流批一体
获取流批一体处理执行环境(用于测试/生产)
123final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();// 设置为批处理模式env.setRuntimeMode(ExecutionMode.BATCH);
本地环境
创建本地执行环境(用于 ...
【Flink】Flink作业提交流程及Java编程模型之WordCount
作业(Job)提交流程高层级抽象视角
Flink 的提交流程,随着部署模式、资源管理平台的不同,会有不同的变化。首先我们从一个高层级的视角,来做一下抽象提炼,看一看作业提交时宏观上各组件是怎样交互协作的。
具体步骤如下:
(1) 一般情况下,由客户端(App)通过分发器提供的 REST 接口,将作业提交给JobManager。
(2)由分发器启动 JobMaster,并将作业(包含 JobGraph)提交给 JobMaster。
(3)JobMaster 将 JobGraph 解析为可执行的 ExecutionGraph,得到所需的资源数量,然后向资源管理器请求资源(slots)。
(4)资源管理器判断当前是否由足够的可用资源;如果没有,启动新的 TaskManager。
(5)TaskManager 启动之后,向 ResourceManager 注册自己的可用任务槽(slots)。
(6)资源管理器通知 TaskManager 为新的作业提供 slots。
(7)TaskManager 连接到对应的 JobMaster,提供 slots。
(8)JobMaster 将需要执行的 ...
【Flink】Flink技术栈(Theory及集群部署)
流式计算什么是数据流?什么是数据集
批处理对应的是数据集
流处理对应的是数据流
无界数据流和有界数据流
有界数据流:明确定义开始和结束的数据流,计算之前获取的所有数据-mysql、日志文件
无界数据流:只有开始没有结束的数据流,获取数据立即处理,无法等待所有数据到达-socket、kafka
硬核Flink介绍基本介绍这里先贴上一个官方链接🔗保命: https://flink.apache.org/
第1代—Hadoop MapReduce
首先第一代的计算引擎,无疑就是 Hadoop 承载的 MapReduce。它将计算分为两个阶段,分别为 Map 和 Reduce。对于上层应用来说,就不得不想方设法去拆分算法,甚至于不得不在上层应用实现多个 Job 的串联,以完成一个完整的算法,例如迭代计算。
第2代—DAG框架(Tez) + MapReduce
由于这样的弊端,催生了支持 DAG 框架的产生。因此,支持 DAG 的框架被划分为第二代计算引擎。如 Tez 以及更上层的 Oozie。这里我们不去细究各种 DAG 实现之间的区别,不过对于当时的 Tez 和 Oozie ...
【计算机网络(上篇)】计算机网络基础
用MarkDown写出漂亮的数学公式,参考:
https://wangzhangfei.blog.csdn.net/article/details/108947641
https://blog.csdn.net/jyfu2_12/article/details/79207643
计算机网络7层结构
应用层 应用层(application-layer)的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程(进程:主机中正在运行的程序)间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议。在互联网中应用层协议很多,如域名系统 DNS,支持万维网应用的 HTTP 协议,支持电子邮件的 SMTP 协议等等。我们把应用层交互的数据单元称为报文。
运输层 运输层(transport layer)的主要任务就是负责向两台主机进程之间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文。“通用的”是指并不针对某一个特定的网络应用,而是多种应用可以使用同一个运输层服务。 由于一台主机可同时运行多个线程,因此运输层有复用和分用的功能。所谓复用就是指多个 ...
【Java温故知新(四)】JDBC优化方案|多线程|Maven
JDBC连接数据库的两种优化方案:
C3P0连接池
防SQL注入(使用preparedStatement预编译)
回顾JDBC
就跟Pymysql差不多,JDBC使用规范步骤 : 6大步.
JDBC规范(掌握四个核心对象):
1 DriverManager:用于注册驱动
2 Connection: 表示与数据库创建的连接
3 Statement: 操作数据库sql语句的对象
4 ResultSet: 结果集或一张虚拟表
1, 注册驱动
MySQL5.x版本Class.forName("com.mysql.jdbc.Driver");
MySQL8.x版本Class.forName("com.mysql.cj.jdbc.Driver");
2, 获取连接对象Connection conn = DriverManager.getConnection(url,username,password);
参数1: url路径地址 格式: jdbc:数据库名称://host:port/数据库名
MySQ ...
【Java温故知新(三)】异常|集合|可变参|Lambda|JDBC
异常异常体系
12345678Throwable //异常体系的最顶层类Error Exception 非RunTimeExceptionException RuntimeExceptionJava 把所有的非正常的情况分为两种:异常(Exception) 和错误(Error),他们都继承 Throwable 父类。Error 错误,一般指的是与虚拟机相关的问题,如系统崩溃、虚拟机错误、动态链接失败等,这种错误无法恢复或不可能捕获,将导致应用程序中断结束,所以应用程序不应该试图去 catch 捕获 Error对象。
JVM默认处理异常的方式: 直接打印在控制台, 抛出来, 后续代码不在执行
处理异常方式:方式一: 自己处理: try.catch.finally特点: 处理完后, 程序会继续向下执行.
12345678//格式try{//业务实现的代码} catch(Exception e) {e.printStackTrace()} finally{//回收资源,这里总会被执行。}
Demo( ...
