自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(99)
  • 收藏
  • 关注

原创 excel VLOOKUP和MATCH结合使用匹配数据

【代码】excel VLOOKUP和MATCH结合使用匹配数据。

2023-06-15 14:03:29 320

原创 Excel公式获取文件名截取对应日期

Excel公式获取文件名截取对应日期。

2023-06-15 14:00:17 400

原创 Python OpenCV 用汉字生成图片

【代码】Python OpenCV 用汉字生成图片。

2023-06-05 11:04:10 459

原创 Flink SQL JOIN

​ 注意我们这里 FOR SYSTEM_TIME AS OF 不是跟一个 processing time,而是左流的 event time,它的含义是去关联这个 event time 时刻 的 直 播 间 数 据 , 同 时 我 们 在 直 播 间 u p s e r t 流 上 也 定 义 了 watermark,所以 temporal join changelog 在执行上会做 watermark 等待和对齐,保证关联上精确版本的结果,从而解决先前方案中关联不上的问题。

2023-05-26 09:45:47 1900 1

原创 Hive自定义UDF,UDTF函数

(1) 自定义UDF:继承UDF,重写 evaluate 方法(2) 自定义 UDTF:继承自 GenericUDTF,重写 3 个方法:initialize(自定义输出的列名和类型),process(将结果返回 forward(result)),close打包=》上传集群路径=》在hive客户端注册为什么要自定义UDF/UDTF?因为自定义函数,可以自己埋点 Log 打印日志,出错或者数据异常,方便调试。依赖以及打jar包插件配置

2023-05-23 15:29:55 929

原创 Pulsar Websocket消费消息两种模式

该方式也需要ACK消息确认,不会记录消费位置。默认会消费最近的消息,不会有消息积压,适用于实时看板大屏结果展示。该方式需要ACK消息确认,会记录消费位置,如果没有及时消费消息会有消息积压。Reader 端要求在 URL 中指定租户、命名空间、topic。2. Reader 端。

2023-05-12 17:01:09 311

原创 FlinkSQL聚合查询

​ 在创建表的 DDL(CREATE TABLE 语句)中,可以增加一个字段,通过 WATERMARK语句来定义事件时间属性。WATERMARK 语句主要用来定义水位线(watermark)的生成表达式,这个表达式会将带有事件时间戳的字段标记为事件时间属性,并在它基础上给出水位线的延迟时间。​ 这里我们把 ts 字段定义为事件时间属性,而且基于 ts 设置了 5 秒的水位线延迟。

2023-04-22 23:43:35 1127

原创 FlinkSQL基本概念、时间属性和窗口

​ 在创建表的 DDL(CREATE TABLE 语句)中,可以增加一个字段,通过 WATERMARK语句来定义事件时间属性。WATERMARK 语句主要用来定义水位线(watermark)的生成表达式,这个表达式会将带有事件时间戳的字段标记为事件时间属性,并在它基础上给出水位线的延迟时间。​ 这里我们把 ts 字段定义为事件时间属性,而且基于 ts 设置了 5 秒的水位线延迟。

2023-04-17 00:09:29 1425

转载 基于 Flink SQL 构建流批一体的 ETL 数据集成

​ 数据仓库是一个集成的(Integrated),面向主题的(Subject Oriented),随时间变化的(Time-Variant),不可修改的(Nonvolatile)数据集合,用于支持管理决策。这是数据仓库之父 Bill Inmon 在 1990 年提出的数据仓库概念。该概念里最重要的一点就是“集成的”,其余特性都是一些方法论的东西。因为数据仓库首先要解决的问题,就是数据集成,就是将多个分散的、异构的数据源整合在一起,消除数据孤岛,便于后续的分析。

2023-03-21 09:40:34 672

原创 数仓建模理论

2023-03-21 09:31:28 100

原创 MySQL FlinkCDC 通过Kafka实时同步到ClickHouse(自定义Debezium格式支持增加删除修改)

把MySQL多库多表的数据通过FlinkCDC DataStream的方式实时同步到同一个Kafka的Topic中,然后下游再写Flink SQL拆分把数据写入到ClickHouse,FlinkCDC DataStream通过自定义Debezium格式的序列化器,除了增加,还能进行删除修改。关于Debezium格式的更多信息,参考Flink官网,网址如下。MySQL FlinkCDC 通过Kafka实时同步到ClickHouse(自定义Debezium格式支持增加删除修改)自定义Debezium序列化器。

2023-02-13 22:43:05 2143

原创 Zeppelin整合Spark3.2.2 yarnClient模式

命令如下:cp zeppelin-site.xml.template zeppelin-site.xml。同理,拷贝zeppelin-env.sh.template并改名为zeppelin-env.sh。先把zeppelin-site.xml.template拷贝一份防止修改错误没有副本了。HADOOP_CONF_DIR为hadoop的环境变量HADOOP_CONF_DIR。zeppelin.server.port 指定对应的端口号,这里为8089。SPARK_MASTER 为spark的提交模式。

2023-02-08 17:46:23 575

原创 ClickHouse日期相关操作

6.获取上一年的本月的最后一天。5.获取上一年的本月的第一天。8.获取上个月的最后一天。2.获取本周的最后一天。4.获取本月的最后一天。7.获取上个月的第一天。1.获取本周的第一天。3.获取本月的第一天。

2023-01-16 16:28:49 4183

原创 Java中图的通用数据结构实现、接口函数、宽度优先和深度优先遍历

​ 由于图的表达形式多种多样,如果没有一个统一的数据结构描述图,那么解题的时候就要对每一种图的数据结构实现一套对应的算法。所以要构建一套通用的结构函数,把多种多样的图转化为上面图的数据结构,每次都使用上面的数据结构解题即可。​ 图的宽度优先遍历(BFS)算法是一个分层搜索的过程,和树的层序遍历算法相同。(3)若此时图中尚有顶点未被访问,则从一个未被访问的顶点出发,重新进行深度优先遍历,直到图中所有顶点均被访问过为止。下面的代码构建的图是有向图,加权图,非连通图(可能存在孤立的点)

2023-01-05 11:23:33 446

原创 flink源码解读启动类CliFrontend

flink源码 CliFrontend

2023-01-02 21:44:34 683

原创 二叉树经典算法题目

思路:套用层序遍历的模板,然后记录当前层的最后一个node,和下一层的最后一个node.(如果知道当前层的最后一个node是哪一个,在把node的左右节点发放入队列的时候,下一层的最后一个node就能得出)。和上一题的不同的一点是,还要知道当前层的第一个节点是谁。1.遇到左子节点为空,右子节点不为空的情况,不满足 2.遇到第一个左子节点不为空,右子节点为空或者在右子节点都为空的时候,下面的节点子节点均为叶。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。

2022-12-25 15:37:44 1871

原创 SQLServer Flink CDC 开启

SQLServer Flink CDC

2022-12-22 16:34:24 455

原创 mongo实时导入到clickhouse案例(包含复杂嵌套json的解析)

本案例是把Mongo数据库的数据通过FlinkCDC实时导入到Kafka,消费Kafka数据把维表数据写入到MySQL。读取MySQL维表数据和消费Kafka的数据通过Flink SQL Join后导入到ClickHouse。(三) 数据准备test01表 json数据user表 json数据使用db.test01.insertOne(json数据) 插入到mongo数据库即可github地址https://github.com/ambitfly/flink-cdc-connectors/blob/

2022-12-11 19:18:04 1521

原创 JVM总结全

HotSpot 默认虚拟机JRockit HotSpot融合了JRockit jdk8初步融合完成 没有解释器,只有编译器IBM J9​ 启动类加载器(引导类加载器)Bootstrap ClassLoader​ 加载java 核心类库,没有父类加载器,只加载包名为java,javax,sun等开头的类​ 扩展类加载器 Extension ClassLoader​ 父类加载器为启动类加载器​ 应用程序加载器 AppClassloader​ 父类加载器为扩展类加载器,用户编写的类由它加载​ 自定义

2022-12-04 22:07:01 438

原创 链表经典算法题目

思路:利用一个map,把原链表的Node当作key,新复制的Node当作value,然后利用Map的映射关系把原链表的Node的next和random复制到新复制的Node中。思路: 在Node后面串一个复制的Node,然后给复制的Node的random赋值,把复制的Node从老链表里拆出来。思路:使用快慢指针,找到中间的节点,然后从中间节点反转链表,头尾同时遍历比较,最后再把反转的链表恢复过来。对于这种比较简单的题目,想要出彩,就要考虑优化的点,考虑空间复杂度,压缩空间。函数,复制一个复杂链表。

2022-11-27 01:31:47 481

原创 sql题:给钢铁烧炉划分周期

一天有若干个周期,给一天的数据划分周期,并计算出每个周期的内的烧炉,换炉,送风,换炉的开始时间和结束时间以及持续时长(单位分钟保留两位小数)。关于跨天的周期要把昨天的半个周期包含在下一天的第一个周期中,当天的最后半个周期移到明天的第一个周期。把昨天的半个周期包含在下一天的第一个周期中,当天的最后半个周期移到明天的第一个周期。烧炉后换炉:SL_TYPE=False SF_STATE=False。送风后换炉:SL_TYPE=False SF_STATE=False。

2022-11-20 23:38:48 573

原创 MongoDB实时同步方案

​ MongoShake是一个以golang语言进行编写的通用的平台型服务,通过读取MongoDB集群的Oplog操作日志,对MongoDB的数据进行复制,后续通过操作日志实现特定需求。日志可以提供很多场景化的应用,为此,我们在设计时就考虑了把MongoShake做成通用的平台型服务。通过操作日志,我们提供日志数据订阅消费PUB/SUB功能,可通过SDK、Kafka、MetaQ等方式灵活对接以适应不同场景(如日志订阅、数据中心同步、Cache异步淘汰等)。

2022-11-13 23:27:56 4052 1

原创 JVM 面试速记

对象都会首先在 Eden 区域分配,在进行第一次垃圾回收后存活的对象复制一份放在s0区,删除eden区的对象,在第二次进行垃圾回收时扫描eden区和s0区的对象,把存活的对象复制一份放在s1区,对象的年龄加1(Eden区->Survivor 区后对象的初始年龄变为1),这时s1区变为了s0区,s0区变为了s1区。当一个类接收到加载请求,这个类不会立即去加载,而是委派给自己的父类去加载,每个层次的类都是如此,因此,所有的加载请求都会传入到父类哪里,只有父类加载不了的时候子类才会去加载。

2022-11-06 23:44:23 318

原创 JVM 执行引擎

解释器:​ 当Java虚拟机启动时会根据预定义的规范对字节码采用逐行解释的方式执行,将每条字节码文件中的内容“翻译”为对应平台的本地机器指令执行。JIT (Just In Time Compiler) 编译器:​ 就是虚拟机将源代码直接编译成和本地机器平台相关的机器语言。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ACTfel55-1667138274253)(F:\笔记\img\解释器和JIT编译器的理解图.png)]

2022-10-30 21:58:36 94

原创 Flink 基本合流操作

App 的支付信息到达以后,会检查对应的第三方支付信息是否已经先到达(先到达会保存在对 应的状态变量中),如果已经到达了,那么对账成功,直接输出对账成功的信息,并将保存第 三方支付消息的状态变量清空。当定时器触发时,检查保存 app 支付信息的状态变量是否还在,如果还在,说明对应的第三方支付信息没有到来,所以输出报警信息。对于连接流 ConnectedStreams 的处理操作,需要分别定义对两条流的处理转换,因此接口中就会有两个相同的方法需要实现,用数字“1”“2”区分,在两条流中的数据到来时分别调用。

2022-10-24 09:09:01 478

原创 flink定时器(Timer)

定时器 默认的区分精度是毫秒。由于定时器只能在 KeyedStream 上使用,所以到了 KeyedProcessFunction 这里,我们 才真正对时间有了精细的控制,定时方法.onTimer()才真正派上了用场。所以我们会看到,程序运行后先在控制台输出“数据到达”的信息,等待 10 秒之后, 又会输出“定时器触发”的信息,打印出的时间间隔正是 10 秒。基于 KeyedStream 注册定时器时,会传入一个定时器触发的时间戳,这个时间戳的定时器对于每个 key 都是有效的。

2022-10-17 09:36:58 6062 7

原创 JVM 对象的实例化内存布局与对象访问

6.执行init方法进行初始化,初始化成员变量,执行实例代码块,调用构造方法,并把堆内的首地址赋值给引用变量。5.设置对象的对象头,将对象的所属类,对象的HashCode,对象的GC信息,锁信息等储存在对象头中。4.初始化分配到的空间,所有属性设置默认值,保证对象实例在不赋值时可以直接使用。​ 如果内存不规整,虚拟机需要维护一个列表,分配列表中空闲的内存。④ 使用反序列化,从文件中,网络中获取一个对象的二进制流。1.判断对象对应的类是否加载,链接,初始化。​ 如果内存规整,使用指针碰撞的方式分配。

2022-10-07 17:02:26 80

原创 JVM 方法区

​ 运行时常量池中包含多种不同的常量,包括编译期就已经明确的数值字面量,也包括到运行期解析后才能够得 的方法或者字段引用。( 字面量是指双引号引住的一系列字符,双引号中可以没有字符,可以只有一个字符,也可以有很多个字符。​ 异常表(异常处理的开始位置,结束位置,代码处理在程序计数器中的偏移地址,捕获异常类的常量池索引)特别说明,静态变量的类型是引用类型的,指的就是引用,不是对象,对象本身就是在堆中的。​ 运行时常量池,在加载类和接口到虚拟机后,就会创建对应的运行时常量池。​ 域名称,域类型,域修饰符。

2022-09-25 23:02:59 97

原创 Flink 检查点(Checkpoint)

​ 发生故障之后怎么办?最简单的想法当然是重启机器、重启应用。这里的问题在于,流处理应用中的任务都是有状态的,而为了快速访问这些状态一般会直接放在堆内存里;现在重启应用,内存中的状态已经丢失,就意味着之前的计算全部白费了,需要从头来过。就像编写文档或是玩 RPG 游戏,因为宕机没保存而要重来一遍是一件令人崩溃的事情;所以就有了存档,这样即使遇到宕机也可以读档继续了。​ 在流处理中,我们同样可以用存档读档的思路,把之前的计算结果做个保存,这样重启之后就可以继续处理新数据、而不需要重新计算了。进一步地,我们

2022-09-16 10:25:52 3200 1

原创 JVM 堆

而很多对象都是朝生夕死的,如果分代的话,把新创建的对象放到某一地方,当GC的时候先把这块存储“朝生夕死”对象的区域进行回收,这样就会腾出很大的空间出来。如果再次触发垃圾回收,会对伊甸园区和幸存者0区的对象进行垃圾回收,此时幸存者0区还幸存的对象会放在幸存者1区,下次再进行垃圾回收会回收对伊甸园区和幸存者1区的对象,把还幸存的对象放到幸存者0区,循环往复(谁空谁是to)5.由Eden区、s0区向s1区复制时,对象大小大于s1区的可用内存,则把该对象转移到老年代,并且老年代的可用内存小于该对象的大小。

2022-09-12 22:48:26 291

原创 JVM PC寄存器和虚拟机栈

​ 另外一种退出方式是,在方法执行过程中遇到了异常,并且这个异常没有在方法体内得到处理,无论是Java虛拟机内部产生的异常,还是代码中使用throw字节码指令产生的异常,只要在本方法的异常表中没有搜索到匹配的异常处理器,就会导致方法退出,这种退出方法的方式称为异常完成出口(Abrupt Method Invocation Completion)。由于 invokevirtual 调用的方法在对应的类的方法表中都有固定的位置,直接索引的值可以用偏移量来表示。在方法运行期间是不会改变局部变量表的大小的。

2022-09-05 00:01:28 595

原创 JVM 类加载器子系统

此方法不需要定义,是javac编译器自动收集类中的所有类变量的赋值动作和静态代码块中的语句合并起来。方法是构造器函数(任何一个类声明后,至少会存在一个构造器)构造方法中指令按语句在源文件中出现的顺序执行。不同于类的构造器(构造器是虚拟机视角下的。不同于类的构造器(构造器是虚拟机视角下的。若该类有父类,JVM会保证子类的。若该类有父类,JVM会保证子类的。初始化阶段就是执行类构造器方法。方法在多线程情况下被同步加锁。方法在多线程情况下被同步加锁。虚拟机必须保证一个类的。虚拟机必须保证一个类的。...

2022-08-28 15:49:02 208

原创 JVM 类加载器

​ 自定义java.lang.String类,但是在加载自定义String类的时候会率先使用引导类加载器加载,而引导类加载器在加载的过程中会先加载jdk自带的文件(rt. jar包中java\lang\String.class),报错信息说没有main方法,就是因为加载的是rt. jar包中的String类。当一个类接收到加载请求,这个类不会立即去加载,而是委派给自己的父类去加载,每个层次的类都是如此,因此,所有的加载请求都会传入到父类哪里,只有父类加载不了的时候子类才会去加载。...

2022-08-28 15:48:04 142

原创 JVM 方法区

​ 运行时常量池中包含多种不同的常量,包括编译期就已经明确的数值字面量,也包括到运行期解析后才能够得 的方法或者字段引用。( 字面量是指双引号引住的一系列字符,双引号中可以没有字符,可以只有一个字符,也可以有很多个字符。​ 异常表(异常处理的开始位置,结束位置,代码处理在程序计数器中的偏移地址,捕获异常类的常量池索引)特别说明,静态变量的类型是引用类型的,指的就是引用,不是对象,对象本身就是在堆中的。​ 运行时常量池,在加载类和接口到虚拟机后,就会创建对应的运行时常量池。​ 域名称,域类型,域修饰符。

2022-08-21 22:30:22 260

原创 Flink SQL (五) 连接到外部系统Hive

Hive 支持类 SQL 的查询语言,可以用来方便对数据进行处理和统计分析, 而且基于 HDFS 的数据存储有非常好的可扩展性,是存储分析超大量数据集的唯一选择。Hive 的主要缺点在于查询的延迟很高,几乎成了离线分析的代言人。​ 我们知道,Hive内部提供了类SQL的查询语言,不过语法细节与标准SQL会有一些出入, 相当于是 SQL 的一种“方言”(dialect)。换句话说,我们可以直接在 Flink 中写 Hive SQL 来操作 Hive 表,这无疑给我们的读写处理带来了极大的方便。...

2022-08-08 00:36:48 2267

原创 Flink SQL(四) 连接到外部系统Elasticsearch和HBase

Elasticsearch连接器的使用与JDBC连接器非常相似,写入数据的模式同样是由创建表的DDL中是否有主键定义决定的。​除了所有ROW类型的字段(对应着HBase中的family),表中还应有一个原子类型的字段,它就会被识别为HBase的rowkey。在表中这个字段可以任意取名,不一定非要叫rowkey。​我们将另一张T中的数据提取出来,并用ROW()函数来构造出对应的columnfamily,最终写入HBase中名为mytable的表。...

2022-07-31 21:57:09 1002

原创 Flink SQL(三) 连接到外部系统System和JDBC

​作为TableSink向数据库写入数据时,运行的模式取决于创建表的DDL是否定义了主键(primarykey)。如果有主键,那么JDBC连接器就将以更新插入(Upsert)模式运行,可以向外部数据库发送按照指定键(key)的更新(UPDATE)和删除(DELETE)操作,如果没有定义主键,那么就将在追加(Append)模式下运行,不支持更新和删除操作。要注意写入MySQL中真正的表名称是users,而MyTable是注册在Flink表环境中的表。...

2022-07-25 00:48:48 721

原创 Flink Sql(二) Kafka连接器

如果作为TableSource,连接器会将读取到的topic中的数据(key,value),解释为对当前key的数据值的更新(UPDATE),也就是查找动态表中key对应的一行数据,将value更新为最新的值;需要特别说明的是,在KafkaTable的字段中有一个ts,它的声明中用到了METADATAFROM,这是表示一个“元数据列”(metadatacolumn),它是由Kafka连接器的元数据“timestamp”生成的。下面我们就分别进行介绍。...

2022-07-17 20:01:12 4628

原创 Flink Sql (一)

​ 对于 Flink 这样的流处理框架来说,数据流和表在结构上还是有所区别的。所以使用 TableAPI 和 SQL 需要一个特别的运行时环境,这就是所谓的“表环境”(TableEnvironment)。它主要负责:(1)注册 Catalog 和表;(2)执行 SQL 查询;(3)注册用户自定义函数(UDF);(4)DataStream 和表之间的转换。​ 这里的 Catalog 就是“目录”,与标准 SQL 中的概念是一致的,主要用来管理所有数据库(database)和表(table)的元数据(met

2022-07-10 20:49:24 1435

原创 InLong介绍

Manager功能Manager 数据流Agent采集插件化用户可以根据自己的使用场景快速开发新的采集插件​ 本地缓存层DataProxy功能DataProxy工作流程Sort分拣执行流程Sort 插件

2022-07-03 20:43:14 2349

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除