批流计算
文章平均质量分 81
....
研发咨询顾问
专注全栈开发和项目管理,诚接商务\业务合作,及问题难点解答和远程协助! 可私信或留言给作者,消息会在6小时内回复哦 (每篇文章末尾有作者名片,可添加联系,秒通过)
展开
-
hive-数据导入导出(超级详细)
而hdfs中create的表名在hdfs是看不到的,只有 location 的表名可以看到,虽然上下的两个表名可以不一致,但是一般使用一样容易区分,注释:从表3查询出来的结果给表1和表2做为数据插入,其中表1和表2可以是临时要创建的新字段,也可以是旧字段,当然3个表也可以是相同。)注释: 表名1的数据要导入给表名2 ,表的结构是要相同的,内部表对内部表,外部表对外部表,且字段结构个数都要相同。partition(1级分区字段=值[,2级分区字段=值]) values(a,b,...)原创 2023-05-23 09:46:41 · 1624 阅读 · 0 评论 -
Flink调优
查看CPU使用情况和内存占用情况,当任务和数据不是平均分布在各节点,而是集中在个别节点时,可以增大并行度使任务和数据更均匀的分布在各个节点。在客户端的“conf/flink-conf.yaml”配置文件中,在“env.java.opts”配置项中添加参数:“-XX:NewRatio”。如“ -XX:NewRatio=2”,则表示老年代与新生代的比值为2:1,新生代占整个堆空间的1/3,老年代占2/3。当设置“setBufferTimeout”大于0时,缓冲区会在该"时间之后"超时,然后进行缓冲区的刷新。原创 2023-05-21 11:20:27 · 205 阅读 · 0 评论 -
flink-内存模型
Flink 并不是将大量对象存在堆上,而是将对象都序列化到一个预分配的内存块上,这个内存块叫做 MemorySegment,它代表了一段固定长度的内存(默认大小为 32KB),也是 Flink 中最小的内存分配单元,并且提供了非常高效的读写方法。它的底层可以是一个普通的 Java 字节数组(byte[]),也可以是一个申请在堆外的 ByteBuffer。默认情况下,池子占了堆内存的 70% 的大小。从GC的角度来看,可以把这里看成的新生代,也就是说这里主要都是由用户代码生成的短期对象。原创 2023-05-21 11:16:13 · 129 阅读 · 0 评论 -
flink-Checkpoint容错恢复
(2)目前本人测试不能在flink的xshell命令行界面进行Ctrl+C进行退出(这个也很好奇,webUI的cancel 单击是模拟正常的),否则Checkpoint文件是没有真正意义上的保存到本地路径的,但在flink-WebUI的界面却显示了成功保存路径的信息,而实际没有保存,这个问题要严重注意,千万不要随便按Ctrl+C,但可以按ctrl+z,后台运行。)Flink故障恢复机制的核心,就是应用状态的一致性检查点有状态流应用的一致检查点,其实就是所有任务的状态,在某个时间点的一份 拷贝(一份快照);原创 2023-05-20 07:27:25 · 1481 阅读 · 0 评论 -
flink-容错重启策略
容错重启策略注意是出现了异常,然后程序重新启动,继续运行,但不是基于上次的结果继续运行,比如代码抛出了一个。会不断的失败重启、失败重启,底层还是用的是作业是fixed-delay重启策略。当然你可以人为测试创建,碰到这种错误,程序会重启动,继续运行。在该地址有作者写过这个代码,了解下。设置间隔,自动检查点,当重启作业时会从检查点继续。原创 2023-05-20 07:25:18 · 103 阅读 · 0 评论 -
flink状态算子和状态后端(超级详细)
每传入一条数据,有状态的算子任务都会读取和更新状态,由于有效的状态访问对于处理数据的低延迟至关重要,因此每个并行任务都会在本地维护其状态,以确保快速的状态访问状态的存储、访问以及维护,由一个可插入的组件决定,这个组件就叫做状态后端(state backend)。)Flink 内置的很多算子,数据源 source,数据存储 sink 等其他的算子都是有状态的,而map(),flatmap(),这两个是没有状态的,所以提供了mapWithState(),flatMapWithState(),原创 2023-05-20 07:19:20 · 580 阅读 · 0 评论 -
flink-Window类型介绍
streaming 流式计算是一种被设计用于处理无限数据集的数据处理引擎,而无限数据集是指一种不断增长的本质上无限的数据集,而 window 是一种切割无限数据为有限块进行处理的手段。当然滚动窗口可以认为是一种特殊的滑动窗口,只是滑动的长度和窗口大小更好一样。(4)注意时间窗口是左闭右开“( ] ” 的,如果有一条数据更好在关闭窗口的时候出现,那么就算在下一个窗口。(1)滑动窗口是固定窗口的更广义的一种形式,滑动窗口由固定的窗口长度和滑动间隔组成。(2)特点:时间对齐,窗口长度固定,可以有重叠。原创 2023-05-19 09:29:36 · 120 阅读 · 0 评论 -
flink-UDF自定义函数
(3)getRuntimeContext()方法提供了函数的 RuntimeContext 的一些信息,例如函数执行的并行度,任务的名字,以及 state 状态。)Rich Function是 “富函数”是 DataStream API 提供的一个函数类的接口,所有 Flink 函数类都有其 Rich 版本。它与常规函数的不同在于,可以获取运行环境的上下文,并拥有一些生命周期方法,所以可以实现更复杂的功能。(2)close()方法是生命周期中的最后一个调用的方法,做一些清理工作。定义传感器数据样例类。原创 2023-05-19 09:28:26 · 168 阅读 · 0 评论 -
flink-DatSet-Sink
数据格式: ({"msg":"success","code":"1000","data":{"area":"北京市 延庆区","number":"11011919831021431X","town":"延庆县","city":"北京","sex":1,"length":18,"birth":"1983-10-21","age":38}},1)返回的是对象类型 所以参数就要求是Any类型 ,数组索引从零开始 ,但获取mysql的数据要多取一列,因为最后的一列是不能读取的。原创 2023-05-19 09:26:51 · 158 阅读 · 0 评论 -
flink-DataSet-Transform注意代码
其实就是groupBy和reduce的组合而已。表是前面一条数据 b表示后面一条数据。跟reduce的功能差不多。原创 2023-05-19 09:23:53 · 47 阅读 · 0 评论 -
flink-DataSet-Source
如果不到导入这个包会报错 No implicit arguments of type: Typelnformation[Rowi] 其实就是你少导入了包。连接mysql的驱动用的是java连接的,scala条用java,java调用mysql-->此处flink的依赖部分请参考前面笔记 -->返回的是对象类型 所以参数就要求是Any类型。设置驱动、url、用户名、密码以及查询语句。代表值类型,AnyRef代表引用类型。)这个是关于读取mysql的操作。方法应该是作弊右开的。创建自定义的输入类型。原创 2023-05-19 09:21:49 · 104 阅读 · 0 评论 -
flink-Environment环境
这种创建方式 是用的比较多的创建一个执行环境,表示当前执行程序的上下文。如果从命令行客户端调用程序以提交到集群,则此方法返回此集群的执行环境,也就是说,getExecutionEnvironment 会根据查询运行的方式决定返回什么样的运行环境,是最常用的一种创建执行环境的方式。需要在调用时指定 JobManager 的 IP 和端口号,并指定要在集群中运行的 Jar 包。那么它使用的都是DataSteam的数据类型 (本章节主要讲这个DataSteam的数据类型处理)原创 2023-05-18 20:50:20 · 185 阅读 · 0 评论 -
flink-支持的数据类型
Flink 还具有一个类型提取系统,该系统分析函数的输入和返回类型,以自动获取类型信息,从而获得序列化器和反序列化器。)其它(Arrays, Lists, Maps, Enums, 等等)Flink 对 Java 和 Scala 中的一些特殊目的的类型也都是支持的,比如 Java 的,ArrayList,HashMap,Enum 等等。)Flink 支持所有的 Java 和 Scala 基础数据类型,Int, Double, Long, String, …scala和java的交叉。原创 2023-05-18 20:49:33 · 117 阅读 · 0 评论 -
flink-处理流程和执行图
那意味着 map 算子的子任务看到的元素的个数以及顺序跟 source 算子的子任务生产的元素的个数、顺序相同, map、fliter、flatMap 等算子都是 one-to-one 的对应关系。)Flink 这样相连的算子链接在一起形成一个 task,原来的算子成为里面的一部分。将算子链接成 task 是非常有效的优化:它能减少线程之间的切换和基于缓存区的数据交换,在减少时延的同时提升吞吐量。)前言:这里我们演示的是是一台节点的flink,这里使用的solt是一个,即默认的。用来表示程序的拓扑结构。原创 2023-05-18 20:47:57 · 899 阅读 · 0 评论 -
flink-WordCount批处理和流处理案例
但是本笔记很多代码原本是用的是1.7.2低版本,出现了很多的新功能,建议不要在用旧版的了,先试下1.11.6 ,如果报错那就用就版本吧 -->如下是开发用到的依赖,如果要打成jar包运行,就要上传到 flink的webUI上面,进行远行。(1)获取一个执行环境(Execution Environment)这里的版本还是和windos的sdk2.11.8的版本一样为好-->打jar 编译要使用的类库 功能有不足的地方 不建议用了 -->(4)放置计算结果的位置(Sink)接收socket数据流。原创 2023-05-18 20:36:41 · 108 阅读 · 0 评论 -
Flink应用场景
ETL是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、清洗转换(transform)、加载(load),主要是一个清洗过程。(1)传统上 , 作为批处理执行的查询或对数据集应用限定的事件记录。为了掌握最新的数据为分析的结果 , 它必须被添加到数据集和分析该查询或重新申请。)事件驱动的应用是有状态的应用程序 , 可摄取事件的一个或更多个事件流和反应来触发输入事件的计算、更新状态、或外部作用。(2)相反 , 应用基于状态的流处理应用。原创 2023-05-18 20:32:48 · 126 阅读 · 0 评论 -
Flink介绍
支持仅处理一次的容错担保(很多框架做到至少一次,比如计算时,有一半的数据出错 那么后一半的数据就会接着计算 不会对所有数据在来一边);跟spadrk类似。可以把静态数据进行批处理操作,将静态的数据抽象成分布式数据集,用户可以方便地使用Flink提供的各种操作符对数据集进行处理;提供了不同级别的抽象,以开发流或批处理作业,如下图所示,越往上就越使用就越简单(封装的越来越多),但功能就会有限制。对数据流进行流处理操作,将流式的数据抽象成分布式的数据流,用户可以对分布式数据流进行操作。原创 2023-05-18 20:32:59 · 149 阅读 · 0 评论 -
flink框架的演变
虽然可设置每隔都是事件来处理数据 但是在很多情况下 不能应用,比如 交通轨道的GPS显示,如果显示有延迟 就很可能 会造成交通事故,所以说还是有延迟。有状态的流式处理:(但有一个缺点 就是来一个处理一个的情况下 如果事件是乱序的情况下 那么就要积攒一定的事件 在进行处理 )流处理的演变: lambda架构相当于是流处理和批出里结合(但缺点 就是 维护性的成本的比较大 )那么急基于上面的两种处理框架 与此诞生处理 新一代 flink 处理框架。虽然可以保证低延迟 但是 取不能保证 高吞吐。原创 2023-05-18 20:31:38 · 47 阅读 · 0 评论 -
sparkMySql数据库‘插入与更新‘同时结合(插入更新)
这种语法 即是更新也是插入,具备两种功能。如果插入的数据表里面主键id是不存在的,那就不插入进去。如果是主键id是存在的,那就更新id的值,如果这个值是一样的,那就不会更新。连接mysql的驱动用的是java连接的,scala条用java,java调用mysql–>-->特备注意 有点人写user 有点人写 username,写法是不统一的。构建 insert into table(field1,field2)创建dbcp2连接池:" + conn)除了主键以为,所有的外更新的字段。原创 2023-05-17 11:34:04 · 681 阅读 · 0 评论 -
SparkMLlib核心概念
通信的角度讲,如果使用MapReduce计算框架,JobTracker和TaskTracker之间通过hearbeat的方式传递数据,会导致非常慢的执行速度。而Spark基于内存的计算模型,天生擅长迭代计算,每个步骤可以直接在内存中完成,只有在必要时,才会操作磁盘、网络。(1)MLlib 是 Spark 的机器学习库,旨在简化机器学习的工程实践工作,并方便扩展到更大规模。计算的过程,机器学习的计算需要在多次迭代后,获得足够小的误差才会停止。提供MLlib机器学习库,它提供了常用的机器学习算法的分布式实现。原创 2023-05-17 11:28:07 · 340 阅读 · 0 评论 -
Spark调优理论小结
拉取属于自己的数据时,如果因为网络异常等原因导致失败会自动进行重试,在一次失败后,会等待一定的时间间隔再进行重试,可以通过加大间隔时长(比如 60s),以增加 shuffle 操作的稳定性。(1)在实践中发现,对于针对超大数据量(数十亿~上百亿)的 shuffle 过程,调节该参数,可以大幅度提升稳定性。(4)合理配置任务的 cpu-corce数、执行内存、stage的task数据(即并行数)(4)对于能够避免的场景,尽量使用int代替String。(1)优先使用数组以及字符串,而不是集合类。原创 2023-05-17 11:22:41 · 65 阅读 · 0 评论 -
Spark内存模型
而JVM的对象可以以序列化的方式存储,序列化的过程是将对象转换为二进制字节流,本质上可以理解为将非连续空间的链式存储转化为连续空间或块存储,在访问时则需要进行序列化的逆过程——反序列化,将字节流转化为对象,序列化的方式可以节省存储空间,但增加了存储和读取时候的计算开销。)虽然不能精准控制堆内内存的申请和释放,但Spark通过对存储内存和执行内存各自独立的规划管理,可以决定是否要在存储内存里缓存新的RDD,以及是否为新的任务分配执行内存,在一定程度上可以提升内存的利用率,减少异常的出现。原创 2023-05-17 11:18:22 · 299 阅读 · 0 评论 -
SparkGraphx
Spark GraphX 是 Spark 的一个模块,主要用于进行以图为核心的计算 和 分布式图的计算。)GraphX 底层也是RDD计算,他和RDD共用了一种存储形态,在展示形态上用图的形式来表示。取出所有的边,filter过滤,e表示边 e.srcId表示边的原点 e.dstId目标点。个点,每个点有id 和属性,id必须是long类型的。取出原点id 大于 目标id的找出来。原点,目标点,边属性)原创 2023-05-17 11:16:54 · 70 阅读 · 0 评论 -
Spark的join类型和策略
小结:虽然spark 是自动选择join策略类型的,但由于 Spark 的计算引擎优化器不是万能的,有些场景下会选择错误的 Join 策略,所以 Spark 2.4 & Spark 3.0 引入了 Join hint,也就是用户可以自己选择 Join 策略。和 MySQL 一样,如果 Spark 中两张参与 Join 的表没指定 where 条件(ON 条件)那么会产生 Cartesian product join,这个 Join 得到的结果其实就是两张行数的乘积。原创 2023-05-17 11:14:37 · 696 阅读 · 0 评论 -
spark-Streaming-Sink
(1)dataStreaming如何要进行数据写出的话,可以先转换成RDD,然后RDD和DF相互转换。这里的话 可以判断 数据是不是为0 相当于优化下查询。每次只能采集一个RDD所以 x 其实就只有一个RDD。注意mySparkSeeion这个是您创建的对象。没有表 自动创建 ,Append表示数据追加。原创 2023-05-16 09:30:19 · 129 阅读 · 0 评论 -
spark-Streaming-原理与操作(超级详细)
它表示连续的数据流,这些连续的数据流可以是从数据源接收的输入数据流,也可以是通过对输入数据流执行转换操作而生成的经处理的数据流。在内部,DStream由一系列连续的RDD表示,如下图。,并且可以使用由高级函数(如map,reduce,join和window)开发的复杂算法进行流数据处理。最后,处理后的数据可以被推送到文件系统,数据库和实时仪表板。)Spark Streaming是核心Spark API的扩展,可实现可扩展、高吞吐量、可容错的实时数据流处理。把连续的流式数据,当成不连续的RDD来处理。原创 2023-05-15 16:42:05 · 293 阅读 · 0 评论 -
spark-SQL-shell操作(超级详细)
用户可以先定义一个简单的Schema,然后逐渐的向Schema中增加列描述。需要注意的是,这些保存模式不使用任何锁定,不是原子操 ,SaveMode详细介绍如下表.加载文件夹,其实原本是加载文件的 ,主要是这个文件名的名字太长,所以就提供了可以使用文件夹。只读取需要的列,支持向量运算,能够获取更好的扫描。)查看 .parquet格式的数据,显示乱码,这个格式如何编写就不演示了。可以跳过不符合条件的数据,只读取需要的数据,降低IO数据量。是自定义的,是标记用的,也是一个文件名,但等号是一定要有的,原创 2023-05-15 16:34:00 · 1465 阅读 · 0 评论 -
spark-SQL-案例(超级详细)
那map( content =>{...} ) 每次取出来的content是多个单词组成的,所以用索引来定位哪一个单词,而这个定位是外部索引的地位,(内部索引就现相当于定位字母了)、查询Score表中 至少有5名学生选修的 并且以 3 开头的课程 的平均分数,count(1)表示 count(cno)而下面的例子中 每次取出的content,就一个单词,如果在使用索引就相当于定位构成单词的字母是哪一个。以下两句都是错误的,因为子查询返回了3个平均值(3类课程),导致两个表不能比较,原创 2023-05-15 16:32:52 · 963 阅读 · 0 评论 -
sparkSQL操作和介绍
它提供了RDD的优点 以及Spark SQL优化后的执行引擎的优点。它是将Hive SQL转换成MapReduce然后提交到集群上执行,大大简化了编写MapReduce的程序的复杂性,由于MapReduce这种计算模型执行效率比较慢。)Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作用。DataFrame除了提供了比RDD更丰富的算子以外,更重要的特点是提升执行效率、减少数据读取以及执行计划的优化;SparkSQL简介。原创 2023-05-14 08:53:42 · 160 阅读 · 0 评论 -
spark-RDD-算子案例(超级详细)
数据格式:192.168.88.1 - - [30/Jul/2017:12:54:40 +0800] "GET /MyDemoWeb/hadoop.jsp HTTP/1.1" 200 242。行格式:192.168.88.1 - - [30/Jul/2017:12:54:40 +0800] "GET /MyDemoWeb/hadoop.jsp HTTP/1.1" 200 242。实现的抽象方法,测试发现底层会自动的循环调用这些方法,可能是根据HashMap的key还获取v,来做实现真正的指定分区*/原创 2023-05-14 08:54:09 · 115 阅读 · 0 评论 -
spark-RDD-所有的Source数据源(超级详细)
是指本地,不会跑集群(即便master/work没有启动都可以运行,因为更集群是没有关系的)(local[*]只是通过最大的多线程模拟了集群而已,local[5]表示启动5个线程,但不算真正跑集群)。如果要打jar提交到集群记得.setMaster("local[*]")要注释掉,因为这个是测试用的(多线程模拟了集群而已),不注释就要写 spark//ip:端口, 具体原因参考前面笔记。但是第二次使用切割就不一样的了 .map(_.split(" ")) 是不会影响原来的行的切割的。原创 2023-05-14 08:54:50 · 213 阅读 · 0 评论 -
spark-RDD原理与操作(超级详细)
通过基于RDD的一系列转换,丢失的数据会被重算,由于RDD的各个Partition是相对独立的,因此只需要计算丢失的部分即可,并不需要重算全部Partition。(3)即数据集的基本组成单位。)RDD和它依赖的父RDD(即 可以认为是通过运算产生出新RDD)的关系有两种不同的类型,即窄依赖(narrow dependency)和宽依赖(wide dependency)。(2)理解:RDD是由分区组成,每个分区运行在不同的Worker上,通过这种方式来实现分布式计算,RDD是逻辑概念,分区是物理概念。原创 2023-05-14 08:52:48 · 2296 阅读 · 0 评论 -
spark-wordCount案例
如果在平常启动spark-shell --master spark://bigData113:7077的时候,出现一下情况,那就检查下所有节点的进程是不是还开启的,或者关机重启,就解决。(4)注意:读写最好在HDFS里面读写,如果在本地读,可能其他的节点本地是没文件的会报错,而写到本地,可能并不是所有节点都可以写到本地,有的没有参与计算。或用这种格式 file:\\\\\\C:\\Users\\HMTX\\Desktop\\tmp\\file.txt。原创 2023-05-14 08:52:11 · 114 阅读 · 0 评论