- 博客(274)
- 资源 (5)
- 收藏
- 关注
原创 DataStream API【3】
例如,如果上游算子的并行度为2,而下游算子的并行度为4,那么一个上游算子实例将把元素均匀分配给两个下游算子实例,而另一个上游算子实例将把元素均匀分配给另外两个下游算子实例。相反,如果下游算子的并行度为2,而上游算子的并行度为4,那么两个上游算子实例将分配给一个下游算子实例,而另外两个上游算子实例将分配给另一个下游算子实例。转发分区策略只将元素转发给本地运行的下游算子的实例,即将元素发送到与当前算子实例在同一个TaskManager的下游算子实例,而不需要进行网络传输。每个下游算子的实例都具有相等的负载。
2023-01-30 16:25:40
643
原创 DataStream API【2】
使用该算子可以将DataStream中的元素按照指定的key(指定的字段)进行分组,具有相同key的元素将进入同一个分区中(不进行聚合),并且不改变原来元素的数据结构。例如,根据元素的形状对元素进行分组,相同形状的元素将被分配到一起,可被后续算子统一处理。KeyedStream用来表示根据指定的key进行分组的数据流。在Flink中,Transformation(转换)算子就是将一个或多个DataStream转换为新的DataStream,可以将多个转换组合成复杂的数据流(Dataflow)拓扑。
2023-01-30 15:55:53
252
原创 DataStream API【1】
在Flink中,用户也可以自定义数据源,以满足不同数据源的接入需求。自定义数据源有3种方式:1)实现SourceFunction接口定义非并行数据源(单线程)。SourceFunction是Flink中所有流数据源的基本接口。2)实现ParallelSourceFunction接口定义并行数据源。3)继承RichParallelSourceFunction抽象类定义并行数据源。
2023-01-30 15:31:04
400
原创 Flink架构及基本概念
TaskManager启动后,JobManager会与它建立连接,并将作业图(JobGraph)转换成可执行的执行图(ExecutionGraph)分发给可用的TaskManager,然后由TaskManager具体执行任务。
2023-01-29 20:44:43
553
原创 Redis 基本数据类型
SortedSet(Zset)是Redis提供的一个非常特别的数据结构,一方面可以给每一个元素value赋予一个权重score,另一方面其内部的元素会按照权重score进行排序,可以得到每个元素的名次,还可以通过score的范围来获取元素的列表。String内部为当前字符串实际分配空间的空间容量,一般要高于实际字符串长度len,当字符串长度小于1M时,扩容都是加倍现有的空间,如果超过1M时,扩容时只会多扩1M空间。一个算法,随着数据的增减,执行时间的长短,如果是O(1),数据增加,查找数据的时间不变。
2023-01-13 11:05:25
513
原创 Redis 事务及连接池
事务Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序的执行。事务的执行过程中,不会被其它客户端发送来的命令请求所打断。
2023-01-12 15:20:39
397
原创 Redis新数据类型
该类型就是元素的2维坐标,在地图上就是经纬度。Redis HyperLogLog是用来做基数统计的算法,HyperLogLog的优点是,在输入元素的数量或体积非常大时,计算基数所需的空间总时固定的、并且时很小的。但是,因为HyperLogLog只会根据输入元素来计算基数,而不会存储输入元素本身,所以HyperLogLog不能像集合那样,返回输入的各个元素。将所有的元素添加到指定的HyperLogLog数据结构中,如果执行命令后HLL估计的近似基数发生变化,则返回1, 否则 返回 0。数据集中不重复的元素。
2023-01-08 11:19:54
474
原创 Redis分布式锁
一种跨JVM的互斥机制来控制共享资源的访问控制分布式系统不同进程共同访问共享资源的一种锁的实现。如果不同的系统或同一个系统的不同主机之间共享了某个临界资源,往往需要互斥来防止彼此干扰,以保证一致性。分布式锁的主流方案。
2023-01-05 15:28:30
399
原创 Redis 应用问题解决
一个一定不存在的缓存及查询不到的数据,由于缓存是不命中时被动写的,并且处于容错考虑,如果存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层查询,失去了缓存的意义。key对应的数据存在,但在redis中过期,此时若有大量的请求发送过来,这些请求发现缓存过期一般会从后端DB加载数据并回设到缓存,这时大并发的请求可能回瞬间把DB压垮。key 对应的数据在数据源并不存在,每次针对此key的请求从缓存中获取不到,请求会都压到数据源,从而可能压垮数据源。这时候需要考虑:缓存被“击穿”的问题。
2023-01-04 18:06:07
531
原创 Redis 数据复制
每个master也持有一个偏移量,master将自己产生的复制流发送给slave时,发送多少个字节的数据,自身的偏移量就会增加多少,目的时当有新的操作修改自己的数据集时,它可以以此更新slave的状态。但是如果master的缓冲去中没有足够的命令积压缓冲记录,或者如果slave引用了不再知道的历史记录(replication ID),则会转而进行一个全量重同步:在这种情况下,slave会得到一个完整的数据集副本,从头开始。在使用Redis复制时的设置中,在master和slave中启用持久化。
2023-01-03 16:40:47
1947
原创 maxwell采集binlog发送kafka
kafka启动完成之后,需要创建一个maxwell的topic给maxwell使用,因为maxwell不会主动创建topic。运行生成数据脚本之后,mysql的test.maxwell表里开始有数据持续写入了。mysql启动好之后,需要更改一下配置,因为是容器启动的,需要进入mysql容器执行。启动完成之后,查看maxwell容器输出日志,如下图所述就说明启动成功了。编写一个脚本,每隔一秒写一条数据到test.maxwell表里。上述配置更改完成之后,退出mysql容器,然后重启。
2022-12-29 17:59:15
783
原创 Redis哨兵模式
主从同步模式,虽然配置简单,但是缺点也十分突出:Master内存受限,Master宕机之后不能自动切换,不能水平扩展哨兵模式(Redis Sentinel)哨兵(Sentinel)模式会启动多个哨兵进程,哨兵进程的作用:监控:能持续监控Redis集群中主从节点的工作状态通知:当监控的节点出现问题后,能通过API来通知系统管理员或者其它程序。
2022-12-28 17:42:32
683
原创 Redis主从同步模式(replication)
主从同步是指以一个节点为基准节点,将数据同步给从节点,使得主从节点的数据保持一致,主节点一般也称为Master,从节点Slave,一个Master节点可以有多个Slave节点。BGSAVE 命令是用来在后台异步宝座当前数据库的数据到磁盘,不会阻塞主节点的进程,当执行 BGSAVE 后,会立即返回OK, 然后 Redis fork出一个新的子进程 来专门成成全量镜像文件,将数据保存到磁盘后,子进程推出。主节点 BGSAVE 的过程中,又有新的写请求到来,主节点怎么工作?主从同步过程中,从服务器是阻塞的吗?
2022-12-27 21:19:22
579
原创 redis
redis(Remote Dictionary Server ,即远程字典服务),是使用 C语言编写的,基于内存存储,Key-Value类型的数据库。它支持网络,亦可持久化。可用作数据库,高速缓存和消息队列代理。是为了解决高并发、高扩展,大数据存储等一系列的问题而产生的数据库解决方案。reids支持的数据结构,如字符串(strings),散列(hashes),列表(lists),集合(sets),有序集合(sorted sets),数据流(steam)。
2022-12-26 16:41:04
281
原创 Trigger(触发器)
Trigger(触发器)流式查询的触发器定义了流式数据处理的时间, 流式查询根据触发器的不同, 可以是根据固定的批处理间隔进行微批处理查询, 也可以是连续的查询.(experimental 2.3 引入)
2022-10-23 09:46:57
686
原创 Structured Streaming输出分析结果
一旦定义了最终结果DataFrame / Dataset,剩下的就是开始流式计算。为此,必须使用返回的 DataStreamWriter Dataset.writeStream()。
2022-10-23 09:46:09
519
原创 Structured Streaming join 操作
join 操作Structured Streaming 支持 streaming DataSet/DataFrame 与静态的DataSet/DataFrame 进行 join, 也支持 streaming DataSet/DataFrame与另外一个streaming DataSet/DataFrame 进行 join.join 的结果也是持续不断的生成, 类似于前面学习的 streaming 的聚合结果.
2022-10-22 09:45:18
896
原创 基于 Watermark 处理延迟数据
watermark 在用于基于时间的状态聚合操作时, 该时间可以基于窗口, 也可以基于 event-time本身.window输出模式必须是append或update. 在输出模式是complete的时候(必须有聚合), 要求每次输出所有的聚合结果. 我们使用 watermark 的目的是丢弃一些过时聚合数据, 所以complete模式使用wartermark无效也无意义.在输出模式是append。
2022-10-22 09:43:54
1071
原创 Structured Streaming Source
使用 Structured Streaming 最重要的就是对 Streaming DataFrame 和 Streaming DataSet 进行各种操作.从 Spark2.0 开始, DataFrame 和 DataSet 可以表示静态有界的表, 也可以表示流式无界表.
2022-10-22 09:37:17
524
原创 Structured Streaming 编程模型
Structured Streaming 的核心思想是:把持续不断的流式数据当做一个不断追加的表这使得新的流式处理模型同批处理模型非常相像. 我们可以表示我们的流式计算类似于作用在静态数表上的标准批处理查询, spark 在一个无界表上以增量查询的方式来运行.
2022-10-22 09:32:14
350
原创 Structured Streaming
随着流数据的持续到达, Spark SQL 引擎持续不断的运行并得到最终的结果. 我们可以使用 Dataset/DataFrame API 来表达流的聚合, 事件-时间窗口(event-time windows), 流-批处理连接(stream-to-batch joins)等等. 这些计算都是运行在被优化过的 Spark SQL 引擎上. 最终, 通过 chekcpoin 和 WALs(Write-Ahead Logs), 系统保证。, 并且统计每个单词的个数. 注意,的一列数据, 数据的类型为。
2022-10-22 09:29:04
336
原创 Spark Streaming优雅关闭
流式任务需要 7*24 小时执行,但是有时涉及到升级代码需要主动停止程序,但是分布式程序,没办法做到一个个进程去杀死,所有配置优雅的关闭就显得至关重要了。使用外部文件系统来控制内部程序关闭。
2022-10-22 09:21:50
391
原创 DStream 输出
输出操作指定了对流数据经转化操作得到的数据所要执行的操作(例如把结果推入外部数据库或输出到屏幕上)。与 RDD 中的惰性求值类似,如果一个 DStream 及其派生出的 DStream 都没有被执行输出操作,那么这些 DStream 就都不会被求值。如果 StreamingContext 中没有设定输出操作,整个 context 就都不会启动。如果写在 foreach 则每个 RDD 中的每一条数据都创建,得不偿失;增加 foreachPartition,在分区创建(获取)。
2022-10-22 09:14:35
223
原创 DStream操作
DStream 上的操作与 RDD 的类似,分为 Transformations(转换)和 Output Operations(输出)两种,此外转换操作中还有一些比较特殊的原语,如:updateStateByKey()、transform()以及各种 Window 相关的原语。
2022-10-22 09:07:59
692
原创 Spark Streaming
需要继承 Receiver,并实现 onStart、onStop 方法来自定义数据源采集自定义数据采集器1. 继承Receiver,定义泛型, 传递参数2. 重写方法val message = "采集的数据为:" + new Random() . nextInt(10) . toString} } }
2022-10-22 08:33:04
105
原创 DataSet_
SparkSQL 能够自动将包含有 case 类的 RDD 转换成 DataSet,case 类定义了 table 的结构,case 类属性通过反射变成了表的列名。Case 类可以包含诸如 Seq 或者 Array 等复杂的结构。DataFrame 其实是 DataSet 的特例,所以它们之间是可以互相转换的。DataSet 是具有强类型的数据集合,需要提供对应的类型信息。
2022-10-21 22:02:09
116
原创 DataFrame_
Spark SQL 的 DataFrame API 允许我们使用 DataFrame 而不用必须去注册临时表或者生成 SQL 表达式。DataFrame API 既有 transformation 操作也有 action 操作。
2022-10-21 21:58:52
278
原创 DataFrame和DataSet
Row 是一个类型,跟 Car、Person 这些的类型一样,所有的。易用性的角度上看,DataFrame API 提供的是一套高层的关系操作,比函数式的 RDD API 要。它提供了 RDD 的优势(强类型,使用强大的 lambda 函数的能力)以及 Spark。➢DataSet 是 DataFrame API 的一个扩展,是 SparkSQL 最新的数据抽象。DataFrame 也是懒执行的,但性能上比 RDD 要高,主要原因:优化的执行计划,即查询计。的优化,最终达到大幅提升运行时效率的目标。
2022-10-21 21:23:08
525
facial-keypoints-detection.zip
2019-09-27
人脸对齐-检测-识别.7z
2019-09-27
拍拍贷“魔镜风控系统”算法设计
2018-10-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人