自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数仓开发之DWS层(二)

本节的数据来源于 Kafka dwd_trade_pay_detail_suc 主题,后者的数据由 payment_info、dwd_trade_order_detail、base_dic 三张表通过内连接关联获得,这一过程不会产生重复数据,因此,该表的重复数据由订单明细表决定。对回撤流数据生成过程进行分析,可以发现,字段内容完整数据的生成一定晚于不完整数据的生成,要确保统计结果的正确性,我们应保留字段内容最全的数据,基于以上论述,内容最全的数据生成时间最晚。最后将状态中的支付日期更新为当日。

2022-11-28 22:49:50 244

原创 数仓开发之DWS层(一)

设计要点:(1)DWS层的设计参考指标体系;(2)DWS层表名的命名规范为dws_数据域_统计粒度_业务过程_统计周期(window)注:window 表示窗口对应的时间范围。

2022-11-28 22:41:34 175

原创 MYSQL之触发器

MySQL从5.0.2版本开始支持触发器。MySQL的触发器和存储过程一样,都是嵌入到MySQL服务器的一 段程序。触发器是由事件来触发某个操作,这些事件包括INSERT、UPDATE、DELETE事件。所谓事件就是指 用户的动作或者触发某项行为。如果定义了触发程序,当数据库执行这些语句时候,就相当于事件发生 了,就会自动激发触发器执行相应的操作。当对数据表中的数据执行插入、更新和删除操作,需要自动执行一些数据库逻辑时,可以使用触发器来实现。

2022-11-25 11:09:20 20

原创 解决找不到依赖项的问题(根源直接解决)

问题: 原因:(1)可能是你的本地仓库里没有该依赖项。(2)如果有的话,可能是没有更新同步到idea解决方法:(1)如果是你的本地仓库里没有该依赖项,你可以去Maven的Setting文件中添加albaba的镜像文件,具体操作,可以去网上搜搜,操作步骤十分简单。 并且在idea的设置->Maven中,将路径改成自己的maven本地仓库。(2)有的话,尝试一下更新,多刷新一下,可能是网络问题。万能解决:先看报错原因: 直接去官网找到对应的依赖项jar包,并且下载到本地,然后安装到本地厂库中。具体流程:先去官方

2022-11-19 10:25:37 600 1

原创 数仓开发之DWD层(四)

使用优惠券支付后,优惠券领用表数据就不会再发生变化,所以在操作类型为 update 的前提下,只要 used_time 不为 null,就可以断定本次操作修改的是 used_time 字段。用户使用优惠券下单时,优惠券领用表的 using_time 字段会更新为下单时间,同时 coupon_status 字段会由 1401 更改为 1402,因此优惠券下单数据应满足三个条件:① 操作类型为 update;读取优惠券领用表数据,筛选优惠券支付数据,写入 Kafka 优惠券支付主题。

2022-11-17 22:31:18 672

原创 数仓开发之DWD层(三)

(附:由于篇幅原因,这里就不在展示代码了,直接告诉大家思路)

2022-11-17 22:27:08 554

原创 数仓开发之DWD层(二)

字典表是作为维度表被 Flink 程序维护的,字典表与加购表不存在业务上的滞后关系,而 look up join 是由主表触发的,即主表数据到来后去 look up 表中查询对应的维度信息,如果缓存未命中就要从外部介质中获取数据,这就要求主表数据在状态中等待一段时间,此处将 ttl 设置为 5s,主表数据会在状态中保存至少 5s。因此,人为设定超时时间,超时时间内没有第二条数据就判定为跳出行为,这是一种近似处理,存在误差,但若能结合业务场景设置合理的超时时间,误差是可以接受的。

2022-11-13 22:14:14 494

原创 数仓开发之DWD层(一)

(1)DWD层的设计依据是维度建模理论,该层存储维度模型的事实表。(2)DWD层表名的命名规范为dwd_数据域_表名。

2022-11-11 19:19:29 821

原创 HBase学习笔记(一)

1.1 HBase定义™ 是以hdfs为数据存储的,一种分布式、可扩展的NoSQL数据库。1.2 HBase数据模型HBase的设计理念依据Google的BigTable论文,论文中对于数据模型的首句介绍。Bigtable是一个稀疏的、分布式的、持久的多维排序map。之后对于映射的解释如下:该映射由行键、列键和时间戳索引;映射中的每个值都是一个未解释的字节数组。最终HBase关于数据模型和BigTable的对应关系如下:HBase使用与。

2022-11-10 19:42:19 504

原创 数仓开发之DIM层

(1)定义类。

2022-11-09 19:49:42 650

原创 DataX实现mysql全量数据同步到hdfs

DataX是阿里巴巴开源的一个异构数据源离线同步工具,致力于实现包括关系型数据 库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高 效的数据同步功能。

2022-10-27 21:35:41 494 1

原创 解决Redis启动:未找到命令的问题

(1)sudo vim /etc/profile.d/my_env.sh ---------(这里注意:我自己是把环境配置方法哦my_env.sh文件中,你们要根据自己的情况而定)回到redis的安装目录,并且移动到src目录下执行make install命令,最后重启启动命令redis-server ./my_redis.conf。export REDIS_HOME=/opt/moudle/redis ---(注释:我们redis的安装目录)

2022-10-19 21:47:22 557

原创 kafka-maxwell-kafka信息采集通道

Maxwell 是由美国Zendesk公司开源,用Java编写的MySQL变更数据抓取软件。它会实时监控Mysql数据库的数据变更操作(包括insert、update、delete),并将变更数据以 JSON 格式发送给 Kafka、Kinesi等流数据处理平台。

2022-10-14 10:16:23 286

原创 Flink中的CEP(二)

Flink CEP 是 Flink 对复杂事件处理提供的强大而高效的应用库。本章中我们从一个简单 的应用实例出发,详细讲解了 CEP 的核心内容——Pattern API 和模式的检测处理,并以案例 说明了对超时事件和迟到数据的处理。最后进行了深度扩展,举例讲解了 CEP 的状态机实现, 这部分大家可以只做原理了解,不要求完全实现状态机的代码。CEP 在实际生产中有非常广泛的应用。对于大数据分析而言,应用场景主要可以分为统 计分析和逻辑分析。

2022-10-06 13:03:30 680

原创 Flink中的CEP(一)

一个匹配规则(2)将匹配规则。

2022-10-05 19:50:41 705

原创 Flink中Table API和SQL(五)

那么就将在追加(Append)模式下运行,

2022-10-05 11:10:50 697

原创 Flink中Table API和SQL(四)

系统函数尽管庞大,也不可能涵盖所有的功能;如果有系统函数不支持的需求,我们就需要用自定义函数(,UDF)来实现了。事实上,系统内置函数仍然在不断扩充,如果我们认为自己实现的自定义函数足够通用、应用非常广泛,也可以在项目跟踪工 具 JIRA 上向 Flink 开发团队提出“议题”(issue),请求将新的函数添加到系统函数中。Flink 的 Table API 和 SQL 提供了多种自定义函数的接口,以抽象类的形式定义。

2022-10-04 15:48:58 486 1

原创 Flink中的Table API和SQL(三)

在创建表的 DDL(CREATE TABLE 语句)中,可以增加一个字段,通过 WATERMARK语句来定义事件时间属性。WATERMARK 语句主要用来定义水位线(watermark)的生成表达式,这个表达式会。

2022-10-03 19:05:41 56

原创 解决:Could not find any format factory for identifier ‘csv‘ in the classpath.问题

在Maven工程中的pom.xml文件添加以下依赖。在类路径中找不到标识符‘在类路径中找不到标识符‘在类路径中找不到标识符‘

2022-10-03 17:37:59 248

原创 Flink中Table Api和SQL(二)

被称为“动态表”(Dynamic Tables)。动态表是Flink在Table API和SQL中的核心概念,它为流数据处理提供了表和SQL支持。我们所熟悉的表一般用来做批处理,面向的是固定的数据集,可以认为是“静态表”;而。

2022-10-02 11:31:03 746

原创 Flink中Table API和SQL(一)

目录十一:Table API和SQL11.1 快速上手11.1.1 需要引入的依赖11.1.2 一个简单示例11.2 基本 API11.2.1 程序架构11.2.2 创建表环境11.2.3 创建表11.2.4 表的查询在 Flink 提供的多层级 API 中,核心是 DataStream API,这是我们开发流 处理应用的基本途径;底层则是所谓的处理函数(process function),可以访问事件的时间信 息、注册定时器、自定义状态,进行有状态的流处理。DataStream API 和处理函数比较通用

2022-09-28 16:54:57 273 1

原创 Flink容错机制(二)

既然是端到端的 exactly-once,我们依然可以从三个组件的角度来进行分析:(1)Flink 内部 Flink 内部可以通过检查点机制保证状态和处理结果的 exactly-once 语义。(2)输入端输入数据源端的 Kafka 可以对数据进行持久化保存,并可以重置偏移量(offset)。所以我 们可以在 Source 任务(FlinkKafkaConsumer)中将当前读取的偏移量保存为算子状态,写入到 检查点中;

2022-09-27 09:26:03 404

原创 Flink容错机制(一)

目录十:容错机制10.1 检查点(Checkpoint)10.1.1 检查点的保存10.1.2 从检查点恢复状态 10.1.3 检查点算法 10.1.4 检查点配置10.1.5 保存点(Savepoint)流式数据连续不断地到来,无休无止;所以流处理程序也是持续运行的,并没有一个明确 的结束退出时间。机器运行程序,996 起来当然比人要容易得多,不过希望“永远运行”也是 不切实际的。因为各种硬件软件的原因,运行一段时间后程序可能异常退出、机器可能宕机, 如果我们只依赖一台机器来运行,就会使得任务的处理被迫中

2022-09-26 12:28:47 495

原创 Flink状态编程(二)

它与常规列表状态的区别 在于,算子并行度进行缩放调整时对于状态的分配方式不同。我们看到,算子状态的注册和使用跟 Keyed State 非常类似,也是需要先定义一个状态描述器(StateDescriptor),告诉 Flink 当前状态的名称和类型,然后从上下文提供的算子状态存储(OperatorStateStore)中获取对应的状态对象。这种“均 匀分配”的具体方法就是“轮询”(round-robin),与之前介绍的 rebanlance 数据传输方式类似, 是通过逐一“发牌”的方式将状态项平均分配的。

2022-09-25 17:30:47 299

原创 Flink状态编程

Flink 不会对状态进行任何自动操作,也不 知道状态的具体数据类型,只会把它当作最原始的字节(Byte)数组来存储。我们需要花费大量的精力来处理状态的管理和维护。

2022-09-24 16:14:07 502

原创 Flink多流转换(二)

多流转换是流处理在实际应用中常见的需求,主要包括分流和合流两大类,本章分别做了 详细讲解。在 Flink 中,分流操作可以通过处理函数的侧输出流(side output)很容易地实现;而合流则提供不同层级的各种 API。最基本的合流方式是联合(union)和连接(connect),两者的主要区别在于union 可以对 多条流进行合并,数据类型必须一致;而connect 只能连接两条流,数据类型可以不同。

2022-09-18 16:56:39 287

原创 Flink多流转换(一)

所谓“分流”,就是将一条数据流拆分成完全独立的两条、甚至多条流。也就是基于一个DataStream,得到完全平等的多个子 DataStream,如图 所示。一般来说,我们会定义一些 筛选条件,将符合条件的数据拣选出来放到对应的流里。其实根据条件筛选数据的需求,本身非常容易实现:只要针对同一条流多次独立调 用.filter()方法进行筛选,就可以得到拆分之后的流了。例如,我们可以将电商网站收集到的用户行为数据进行一个拆分,根据类型(type)的不 同,分为“Mary”的浏览数据、“Bob”的浏览数据等等。

2022-09-18 12:00:41 380

原创 Flink处理函数(一)

目录 7.1 基本处理函数(ProcessFunction)7.1.1 处理函数的功能和使用7.1.2 ProcessFunction 解析7.1.3 处理函数的分类7.2 按键分区处理函数(KeyedProcessFunction)7.2.1 定时器(Timer)和定时服务(TimerService)7.2.2 KeyedProcessFunction 的使用7.3 窗口处理函数7.3.1 窗口处理函数的使用7.3.2 ProcessWindowFunction 解析7.4 应用案例——Top N7.4.

2022-09-17 09:34:18 125

原创 Flink中的时间和窗口(三)

对于不同的窗口类型,触发计算的条件也会不同。例如,一个滚动事件时间窗口,应该在 水位线到达窗口结束时间的时候触发计算,属于“定点发车”;而一个计数窗口,会在窗口中 元素数量达到定义大小时触发计算,属于“人满就发车”。所以 Flink 预定义的窗口类型都有 对应内置的触发器。对于事件时间窗口而言,除去到达结束时间的“定点发车”,还有另一种情形。当我们设 置了允许延迟,那么如果水位线超过了窗口结束时间、但还没有到达设定的最大延迟时间,这 期间内到达的迟到数据也会触发窗口计算。

2022-09-15 16:07:29 146 2

原创 Flink中的时间和窗口(二)

所以截取出的就是某一时间 段的数据。到达结束时间时,窗口不再收集数据,触发计算输出结果,并将窗口关闭销毁。所 以可以说基本思路就是“定点发车”。用结束时间减去开始时间,得到这段时间的长度,就是窗口的大小(window size)。这里 的时间可以是不同的语义,所以我们可以定义处理时间窗口和事件时间窗口。Flink 中有一个专门的类来表示时间窗口,名称就叫作。

2022-09-14 18:42:06 507 2

原创 Flink 中的时间和窗口(一)

在事件时间语义下,我们不依赖系统时间,而是基于数据自带的时间戳去定义了一个时钟, 用来表示当前时间的进展。于是每个并行子任务都会有一个自己的逻辑时钟,它的前进是靠数 据的时间戳来驱动的。但在分布式系统中,这种驱动方式又会有一些问题。因为数据本身在处理转换的过程中会 变化,如果遇到窗口聚合这样的操作,其实是要攒一批数据才会输出一个结果,那么下游的数据就会变少,时间进度的控制就不够精细了。另外,数据向下游任务传递时,一般只能传输给一个子任务(除广播外),这样其他的并行子任务的时钟就无法推进了。

2022-09-12 20:30:23 530 1

原创 DataStream API(三)

如果我们想将数据存储到我们自己的存储设备中,而 Flink 并没有提供可以直接使用的连接器,又该怎么办呢?与 Source 类似,Flink 为我们提供了通用的 SinkFunction 接口和对应的 RichSinkDunction抽象类,只要实现它,通过简单地调用 DataStream 的.addSink()方法就可以自定义写入任何外 部存储。之前与外部系统的连接,其实都是连接器帮我们实现了 SinkFunction,现在既然没有 现成的,我们就只好自力更生了。例如,

2022-09-11 16:42:35 612

原创 DataStream(二)

Flink 的 DataStream API 编程风格其实是一致的:基本上都 是基于 DataStream 调用一个方法,表示要做一个转换操作;方法需要传入一个参数,这个参 数都是需要实现一个接口。很容易发现,这些接口有一个共同特点:全部都以算子操作名称 + Function 命名。我们不仅可以通过自定义函数类或者匿名类来 实现接口,也可以直接传入 Lambda 表达式。这就是所谓的用户自定义函数(user-defined function,UDF)。1. 函数类(Function Classes)

2022-09-10 10:59:35 301

原创 DataStream API(一)

我们想要读取的数据源来自某个外部系统,而 flink 既没有预实现的方法、也没有提供连接器, 又该怎么办呢?那就只好自定义实现 SourceFunction 了。接下来我们创建一个自定义的数据源,实现 SourceFunction 接口。主要重写两个关键方法:run()和 cancel()。⚫ run()方法:使用运行时上下文对象(SourceContext)向下游发送数据;⚫ cancel()方法:通过标识位控制退出循环,来达到中断数据源的效果。

2022-09-10 09:54:03 162

原创 Hadoop HA高可用环境搭建

(1)所谓 HA(High Availablity),即高可用(7*24 小时不中断服务)。(2)实现高可用最关键的策略是消除单点故障。HA 严格来说应该分成各个组件的 HA机制:HDFS 的 HA 和 YARN 的 HA。(3)NameNode 主要在以下两个方面影响 HDFS 集群➢ NameNode 机器发生意外,如宕机,集群将无法使用,直到管理员重启。

2022-09-07 22:35:16 348 2

原创 ZooKeeper(续)

前提:保证 hadoop102、hadoop103、hadoop104 服务器上 Zookeeper 集群服务端启动。

2022-09-07 16:49:34 258

原创 ZooKeeper学习笔记(一)

Zookeeper 是一个开源的分布式的,为分布式框架提供协调服务的 Apache 项目。

2022-09-06 13:02:00 32

原创 解决kafka启动成功后然后又关闭了的问题

如果不知道的自己的kafka的log.Dirs路径,可以去kafka的config目录下的servers.properties。如果不知道cluster.id值,可以去kafka的日志目录中查看报错信息,里面有cluster_id。原因:可能是meta.properties中cluster_id值有误。修改meta.properites中的cluster.id值。修改完之后,在重新启动kakfa就可以了。先移动到kafka的log.Dirs路径。找到log.Dirs目录后。

2022-09-03 20:28:18 654 2

原创 Flink 运行时架构(三)

(Operator),所以我们的程序可以看作是一串算子构成的管道,数据则像水流一样有序 地流过。比如在之前的 WordCount 代码中,基于执行环境调用的 socketTextStream()方法,就是一个读取文本流的算子;而后面的 flatMap()方法,则是将字符串数据进行分词、转换成二元组的算子。所有的 Flink 程序都可以归纳为由三部分构成: Source、 Transformation 和 Sink。⚫。

2022-09-03 16:38:43 274

原创 Flink(二)

从 Flink 1.8 版本开始,不再提供基于 Hadoop 编译的安装包,若需要 Hadoop 的环境 支持,需要自行在官网下载 Hadoop 相关版本的组件 flink-shaded-hadoop-2-uber-2.7.5-10.0.jar, 并将该组件上传至 Flink 的 lib 目录下。总结一下,在会话模式下,集群的生命周期独立于集群上运行的任何作业的生命周期,并 且提交的所有作业共享资源。而单作业模式为每个提交的作业创建一个集群,带来了更好的资 源隔离,这时集群的生命周期与作业的生命周期绑定。

2022-09-01 21:41:29 243

空空如也

空空如也

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

TA关注的人

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