Rango_lhl
码龄6年
  • 150,171
    被访问
  • 39
    原创
  • 209,454
    排名
  • 42
    粉丝
关注
提问 私信

个人简介:记录一个数据老狗的攒知识之路

  • 加入CSDN时间: 2015-12-28
博客简介:

Rango_lhl的博客

查看详细资料
  • 2
    领奖
    总分 133 当月 7
个人成就
  • 获得60次点赞
  • 内容获得19次评论
  • 获得262次收藏
创作历程
  • 29篇
    2021年
  • 9篇
    2018年
  • 2篇
    2017年
  • 11篇
    2016年
  • 1篇
    2015年
成就勋章
TA的专栏
  • 大数据
    22篇
  • Spark
    3篇
  • 数据库
    4篇
  • 工作总结
    3篇
  • SQL
    4篇
  • Python
    14篇
  • R
    1篇
  • 杂谈
    1篇
  • 数据分析
    5篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

FlinkCDC 2.0使用实践体验

一、背景说明所谓CDC:全称是 Change Data Capture ,在广义的概念上,只要能捕获数据变更的技术,我们都可以称为 CDC 。通常我们说的 CDC 技术主要面向数据库的变更,是一种用于捕获数据库中数据变更的技术。目前实时链路对于数据的处理是大多数使用的方案是通过工具,对业务数据日志的监控(如canal/maxwell),并连接到kafka,实现对业务数据的实时获取,在实时数仓架构上,ods层一般也会设计在kafka(数据入湖另外说),参考下面图1。而通过FlinkCDC则可以在确保数据一
原创
发布博客 2021.09.13 ·
472 阅读 ·
0 点赞 ·
0 评论

Flink-分组窗口 | Over Windows | SQL 中的 Group Windows | SQL 中的 Over Windows

窗口(Windows)时间语义,要配合窗口操作才能发挥作用。最主要的用途,当然就是开窗口、根据时间段做计算了。下面我们就来看看Table API和SQL中,怎么利用时间字段做窗口操作。在Table API和SQL中,主要有两种窗口:Group Windows和Over Windows分组窗口(Group Windows)Group Windows 是使用 window(w:GroupWindow)子句定义的,并且必须由as子句指定一个别名。为了按窗口对表进行分组,窗口的别名必须在 grou
转载
发布博客 2021.07.07 ·
130 阅读 ·
0 点赞 ·
0 评论

Flink从Kafka取数WordCount后TableApi写入ES

一、背景说明需求为从Kafka消费对应主题数据,通过TableApi对数据进行WordCount后,基于DDL写法将数据写入ES。二、代码部分说明:代码中关于Kafka及ES的连接部分可以抽象到单独的工具类使用,这里只是一个演示的小demo,后续操作均可自行扩展,如Kakfa一般处理为json格式数据,引入fastjson等工具使用富函数进行格式处理即可。package com.flinksql.test;import org.apache.flink.api.common.functions
原创
发布博客 2021.06.20 ·
53 阅读 ·
0 点赞 ·
0 评论

FlinkSQL写入Kafka/ES/MySQL示例-JAVA

一、背景说明Flink的API做了4层的封装,上两层TableAPI、SQL语法相对简单便于编写,面对小需求可以快速上手解决,本文参考官网及部分线上教程编写source端、sink端代码,分别读取socket、kafka及文本作为source,并将流数据输出写入Kafka、ES及MySQL,方便后续查看使用。二、代码部分说明:这里使用connect及DDL两种写法,connect满足Flink1.10及以前版本使用,目前官方文档均是以DDL写法作为介绍,建议1.10以后的版本使用DDL写法操作,通
原创
发布博客 2021.06.18 ·
238 阅读 ·
0 点赞 ·
0 评论

Flink使用connect实现双流join全外连接

一、背景说明在Flink中可以使用Window join或者Interval Join实现双流join,不过使用join只能实现内连接,如果要实现左右连接或者外连接,则可以通过connect算子来实现。现有订单数据及支付数据如下方说明,基于数据时间实现订单及支付数据的关联,超时或者缺失则由侧输出流输出//OrderLog.csv 订单数据,首列为订单id,付款成功则类型为pay(第二列),且生成支付id(第三列),最后列为时间34729,create,,155843084234730,create,
原创
发布博客 2021.06.08 ·
350 阅读 ·
1 点赞 ·
0 评论

Flink使用二次聚合实现TopN计算-乱序数据

一、背景说明:在上篇文章实现了TopN计算,但是碰到迟到数据则会无法在当前窗口计算,需要对其中的键控状态优化Flink使用二次聚合实现TopN计算本次需求是对数据进行统计,要求每隔5秒,输出最近10分钟内访问量最多的前N个URL,数据流预览如下(每次一条从端口传入):208.115.111.72 - - 17/05/2015:10:25:49 +0000 GET /?N=A&page=21 //15:50-25:50窗口数据208.115.111.72 - - 17/05/2015:1
原创
发布博客 2021.05.26 ·
104 阅读 ·
1 点赞 ·
3 评论

Flink使用二次聚合实现TopN计算

一、背景说明:有需求需要对数据进行统计,要求每隔5分钟输出最近1小时内点击量最多的前N个商品,数据格式预览如下:543462,1715,1464116,pv,1511658000662867,2244074,1575622,pv,1511658000561558,3611281,965809,pv,1511658000894923,3076029,1879194,pv,1511658000834377,4541270,3738615,pv,1511658000315321,942195,433
原创
发布博客 2021.05.24 ·
347 阅读 ·
0 点赞 ·
0 评论

Flink去重统计-基于自定义布隆过滤器

一、背景说明在Flink中对流数据进行去重计算是常有操作,如流量域对独立访客之类的统计,去重思路一般有三个:基于Hashset来实现去重数据存在内存,容量小,服务重启会丢失。使用状态编程ValueState/MapState实现去重常用方式,可以使用内存/文件系统/RocksDB作为状态后端存储。结合Redis使用布隆过滤器实现去重适用对上亿数据量进行去重实现,占用资源少效率高,有小概率误判。这里以自定义布隆过滤器的方式,实现Flink窗口计算中独立访客的统计,数据集样例如下: 二、
原创
发布博客 2021.05.19 ·
350 阅读 ·
2 点赞 ·
4 评论

Flink键控状态AggregatingState开发实例

一、键控状态说明参考官网说明,几个键控状态介绍如下:ValueState: 保存一个可以更新和检索的值(如上所述,每个值都对应到当前的输入数据的 key,因此算子接收到的每个 key 都可能对应一个值)。 这个值可以通过 update(T) 进行更新,通过 T value() 进行检索。ListState: 保存一个元素的列表。可以往这个列表中追加数据,并在当前的列表上进行检索。可以通过 add(T) 或者 addAll(List) 进行添加元素,通过 Iterable get() 获得整个列表。还
原创
发布博客 2021.05.08 ·
216 阅读 ·
0 点赞 ·
0 评论

Flink实现连续数据异常预警-定时器

通过一个小需求的开发来简明Flink定时器的应用。一、需求说明:对水库的数据进行实时监测,如果10秒内水位线没有下降,则做预警输出。数据使用socket进行模拟,数据包含 传感器编号/时间戳/水位 三个字段。实现逻辑说明如下图:数据1实时进来,第一条数据水位线为1米,建立定时器,第四条数据在10秒内进来,并且水位降低,则删除定时器,随即后续无任何再操作。数据2实时进来,第一条数据水位线为1米,建立定时器,第四条数据在第10秒进来,10秒内水位无下降,出发定时器的规则,在侧输出流输出预警提.
原创
发布博客 2021.05.07 ·
372 阅读 ·
0 点赞 ·
0 评论

Flink使用Watermark处理延迟数据-侧输出流

一、关于Flink的Watermark1.12版本之后默认时间语义为Event time(事件时间),并且实际使用也是以事件时间为主,故这边背景均以基于时间事件的来说明。支持event time的流式处理框架需要一种能够测量event time 进度的方式;比如, 一个窗口算子创建了一个长度为1小时的窗口,那么这个算子需要知道事件时间已经到达了这个窗口的关闭时间, 从而在程序中去关闭这个窗口。事件时间可以不依赖处理时间来表示时间的进度.例如,在程序中,即使处理时间和事件时间有相同的速度, 事件时间
原创
发布博客 2021.05.06 ·
444 阅读 ·
0 点赞 ·
0 评论

FlinkSQL使用自定义UDTF函数行转列-IK分词器

一、背景说明本文基于IK分词器,自定义一个UDTF(Table Functions),实现类似Hive的explode行转列的效果,以此来简明开发过程。如下图Flink三层API接口中,Table API的接口位于最顶层也是最易用的一层,可以套用SQL语法进行代码编写,对于有SQL基础的能很快上手,但是不足之处在于灵活度有限,自有函数不能满足使用的时候,需要通过自定义函数实现,类似Hive的UDF/UDTF/UDAF自定义函数,在Flink也可以称之为Scalar Functions/Table Fun
原创
发布博客 2021.05.04 ·
275 阅读 ·
0 点赞 ·
1 评论

Flink实时维表查询优化-旁路缓存

一、背景说明:在目前实时数仓中,由于维表具有主键唯一性的特点,Hbase/Redis通常作为维表存放选择Hbase:数据存于磁盘具有持久性但是查询效率慢。Redis:数据存于内存查询效率高,但维表多数据量大时候占用资源多。基于旁路缓存思想,对维表存储的优化的思路为:维表数据存储在Hbase,使用Redis作为缓存,但查询维表时有限查询Redis,如果没有该维表则去Hbase查询后并将维表数据放入Redis,并按一定时间保存,超过时间Redis自动清理(可使不常用维表无需常驻内存,缺点是首次查询较
原创
发布博客 2021.05.02 ·
561 阅读 ·
0 点赞 ·
0 评论

使用Flink-CEP标记网页跳出用户代码开发

一、需求说明:对页面日志数据进行ETL,对跳出用户进行标记后输出到Kafka。跳出用户定义:条件1:不是从其他页面跳转过来的页面,是一个首次访问页面。日志数据表现为不存在last_page_id字段。条件2:距离首次访问结束后10秒内,没有对其他的页面再进行访问。ps:该需求一般为实时项目中对kafka日志数据进行消费后处理,后续输出到kafka计算页面跳出率用于运营分析使用,该文重点在于代码部分的处理,因此测试数据简化输入及输出。测试数据说明://mid对应设备,page_id对应当
原创
发布博客 2021.04.18 ·
99 阅读 ·
0 点赞 ·
0 评论

MapReduce之数据分片思想

尽管MR由于计算效率问题,已经不适用于大多数业务场景,Hive3开始计算引擎改为TEZ,但MR的经典思路在Hadoop生态各组件都有体现,重温后对各组件原理的理解还有使用都有帮助,如Spark的RDD分区里面的源码就能看到MR分片思想的影子。这里仅拿输入Map前分片(Split)这个动作的源码做窥探,深入挖掘下分片(split)的思想。一、简单总结进行MR前,对要计算的各文件按分片逻辑切分,多少个分片则对应产生多少个Map计算。分片逻辑以某个值(splitSize)为基准,超过其1.1倍时,则再做分片
原创
发布博客 2021.03.16 ·
89 阅读 ·
0 点赞 ·
0 评论

HDFS名称节点工作过程

一、名称节点(NameNode)1.什么是名称节点在HDFS中,名称节点负责管理分布式文件系统的命名空间(Namespace),保存了两个核心的数据结构-FsImage和EditLog。FsImage:用于维护文件系统树以及文件树中所有的文件和文件夹的元数据。EditLog:中记录所有针对文件创建、删除、重命名等操作的日志文件。名称节点记录了每个文件中各个块所在的数据节点的位置信息,但并不持久化存储这些信息,而是在系统每次启动时扫描所有数据节点重构得到这些信息。2.名称节点工作过程名
原创
发布博客 2021.02.15 ·
1724 阅读 ·
2 点赞 ·
0 评论

HDFS读写过程-从类调用角度

一、HDFS相关类说明FileSystem:通用文件系统的抽象基类,可以被分布式文件系统继承,所有可能使用Hadoop文件系统的代码都要使用到这个类。DistributedFileSystem:Hadoop为FileSystem这个抽象类提供了多种具体的实现,DistributedFileSystem就是FileSystem在HDFS文件系统中的实现。FSDataInputStream:FileSystem的open()方法返回的是一个输入流FSDataInputStream对象,在HDSF文件系统中
原创
发布博客 2021.02.14 ·
66 阅读 ·
0 点赞 ·
0 评论

Spark+Kafka实时监控Oracle数据预警

目标: 监控Oracle某张记录表,有新增数据则获取表数据,并推送到微信企业。流程: Kafka实时监控Oracle指定表,获取该表操作信息(日志),使用Spark Structured Streaming消费Kafka,获取数据后清洗后存入指定目录,Python实时监控该目录,提取文本里面数据并推送到微信。(Oracle一台服务器,Kafka及Spark在另外一台服务器)架构: Oracle+Kafka+Spark Structured Streaming+Pythoncentos7oracle
原创
发布博客 2021.02.03 ·
176 阅读 ·
0 点赞 ·
0 评论

面向对象-基于Python代码例子简谈

最近同事聊起所谓面向对象,这里使用Python实现一个搜索引擎的小功能,来作为对面向对象的理解。相关概念网上很多,这里不再多复述,先从代码走起,再代入概念。代码功能:根目录下有1.txt 2.txt 3.txt 三个文件,实现输入文件名,返回是否有该文件及该文件的文件大小代码要实现的功能很简单,这里引用类的写法是为了作为解释面向对象的例子,简单功能可以无需这样写,如若是工程开发,这样写的好处在于通过面向对象的设计,定义好了各功能接口,模块化开发,实现高内聚低耦合。#SearchEngineBase
原创
发布博客 2021.01.29 ·
184 阅读 ·
0 点赞 ·
0 评论

sqoop处理换行符--包含clob字段情况

一、sqoop同步oracle数据非clob字段:要处理换行符,在sqoop脚本中,参数使用下面任意一个即可#替换为空 --hive-delims-replacement "" #删除--hive-drop-import-delims 二、sqoop同步oracle数据clob字段clob字段一般包含大量文本,必然包含换行符,使用上面参数没有作用,需要使用下面参数:#指定clob列为String类型--map-column-java CLOB列=String 例子如下:orac
原创
发布博客 2021.01.26 ·
433 阅读 ·
0 点赞 ·
2 评论
加载更多