自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 大数据学习(57)-DataX基础

DataX是一个开源的数据同步工具,主要用于在不同数据存储之间高效迁移数据。DataX架构原理:为了解决异构数据源同步问题,DataX 将复杂的网状的同步链路变成了星型数据链路,DataX 作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候,只需要将此数据源对接到DataX,便能跟已有的数据源做到无缝数据同步。二、DataX 的核心概念数据同步模型DataX 采用Reader:从源数据源读取数据。Channel:数据传输通道,负责数据的缓冲和传输。Writer:将数据写入目标数据源。

2025-03-06 16:52:16 571

原创 大数据学习(56)-Impala

Impala 是一个 MPP(大规模并行处理)引擎,支持低延迟的交互式查询。与 Hive 不同,Impala 不依赖于 MapReduce,而是直接访问 HDFS 或 HBase 数据。

2025-03-05 18:30:30 638

原创 大数据学习(55)-BI工具数据分析的使用

使用 BI 工具的可视化功能,创建图表和仪表盘。这里需要选择对应合适的图表更加清晰直观地的展示数据。是两种不同的数据可视化展示方式,它们在使用场景、设计风格和功能特点上有所区别。在 BI 工具中连接数据源(如各类数据库、Excel、API 等)。使用BI 工具的数据清洗功能,处理缺失值、重复值、异常值等。确定需要分析的数据指标和维度。中,选择图表类型(如柱状图、折线图)。调整图表样式和格式使得结构更加协调完整。在 BI 编辑器中,选择需要清洗的列。拖拽字段到图表的轴、值、图例等区域。,保存清洗后的数据。

2025-03-04 16:22:09 434

原创 大数据学习(54)-Linux基础

Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段:1.内核的引导。2.运行 init。3.系统初始化。4.建立终端。5.用户登录系统。许多程序需要开机启动。它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。是一种在后台运行的特殊进程,通常用于执行系统任务或服务,而不需要用户直接交互。

2025-03-03 15:01:21 980

原创 大数据学习(53)-Hive与Impala

Impala 支持谓词下推(Predicate Pushdown),在数据扫描阶段就过滤掉不必要的数据,减少了数据传输和处理的开销。Impala 的守护进程(Impala Daemon)是长期运行的,查询可以直接在这些进程上执行,避免了任务启动的开销。Impala 充分利用数据本地性(Data Locality),在数据所在的节点上执行计算,减少了数据传输的开销。Impala 的查询执行过程主要在内存中进行,避免了频繁的磁盘 I/O,显著提高了查询速度。

2025-03-02 22:50:40 841

原创 大数据学习(52)-MySQL数据库基本操作

在 MySQL 中,NULL 值与任何其它值的比较(即使是 NULL)永远返回 NULL,即 NULL = NULL 返回 NULL。在 MySQL 中使用 SELECT 命令来读取数据, 同时我们可以在 SELECT 语句中使用 WHERE 子句来获取指定的记录。在 MySQL 中,NULL 用于表示缺失的或未知的数据,处理 NULL 值需要特别小心,因为在数据库中它可能会导致不同于预期的结果。需要修改或更新 MySQL 中的数据,可以使用 UPDATE 命令来操作。可以通过where来进行条件限制。

2025-03-02 18:35:34 502

原创 大数据学习(51)-MySQL数据库学习

timestamp :时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用四字节。以字符串形式存储数字,确保精确计算,不会出现浮点数精度丢失的问题。为了找到对应的文件的数据类型可以先进行导出数据,得到对应的文件类型,再将数据进行导入,得到正确的文件类型。由于逐行删除并记录日志,性能较差,尤其是数据量较大时。由于直接释放数据页,性能较好,适合快速清空大表。,比如:名字,地址,但要保证最长的能存的进去。,比如:身份证,手机号,md5。

2025-02-28 18:05:29 482

原创 大数据学习(50) - Flink状态后端(State Backends)

这样,并行度缩放之后的并行子任务就获取到了联合后完整的“大列表”,可以自行选择要使用的状态项和要丢弃的状态项。与Keyed State中的列表状态的区别是:在算子状态的上下文中,不会按键(key)分别处理状态,所以每一个并行子任务上只会保留一个“列表”(list),也就是当前并行子任务上所有状态项的集合。这时所有分区的所有数据都会访问到同一个状态,状态就像被“广播”到所有分区一样,这种特殊的算子状态,就叫作广播状态(BroadcastState)。根据状态的类型不同,重组分配的方案也会不同。

2025-02-21 21:24:59 256

原创 大数据学习(49) - Flink按键分区状态(Keyed State)

ReducingState<T>这个接口调用的方法类似于ListState,只不过它保存的只是一个聚合值,所以调用.add()方法时,不是在状态列表里添加元素,而是直接把新数据和之前的状态进行归约,并用得到的结果更新状态。归约逻辑的定义,是在归约状态描述器(ReducingStateDescriptor)中,通过传入一个归约函数(ReduceFunction)来实现的。这里的归约函数,就是我们之前介绍reduce聚合算子时讲到的ReduceFunction,所以状态类型跟输入的数据类型是一样的。

2025-02-17 23:02:07 585

原创 大数据学习(48) - Flink状态种类

我们知道在Flink中,一个算子任务会按照并行度分为多个并行子任务执行,而不同的子任务会占据不同的任务槽(task slot)。由于不同的slot在计算资源上是物理隔离的,所以Flink能管理的状态在并行任务间是无法共享的,每个状态只能针对当前子任务的实例有效。就是由Flink统一管理的,状态的存储访问、故障恢复和重组等一系列问题都由Flink实现,我们只要调接口就可以;则是自定义的,相当于就是开辟了一块内存,需要我们自己管理,实现状态的序列化和故障恢复。Flink中所有的算子都可以是有状态的。

2025-02-17 22:57:55 433

原创 大数据学习(47) - Flink窗口处理函数

与此同时,也增加了一些获取其他信息的方法:比如可以通过.window()直接获取到当前的窗口对象,也可以通过.windowState()和.globalState()获取到当前自定义的窗口状态和全局状态。注意这里的“窗口状态”是自定义的,不包括窗口本身已经有的状态,针对当前key、当前窗口有效;窗口处理函数就是一种典型的全窗口函数。窗口处理函数ProcessWindowFunction的使用与其他窗口函数类似,也是基于WindowedStream直接调用方法就可以,只不过这时调用的是.process()。

2025-02-15 21:35:27 670

原创 大数据学习(46) - Flink按键分区处理函数

类似地,KeyedProcessFunction也是继承自AbstractRichFunction的一个抽象类,与ProcessFunction的定义几乎完全一样,区别只是在于类型参数多了一个K,这是当前按键分区的key的类型。在.onTimer()方法中可以实现定时处理的逻辑,而它能触发的前提,就是之前曾经注册过定时器、并且现在已经到了触发时间。基于keyBy之后的KeyedStream,直接调用.process()方法,这时需要传入的参数就是KeyedProcessFunction的实现类。

2025-02-15 21:30:37 470

原创 大数据学习(45) - Flink基本处理函数

处理函数提供了一个“定时服务”(TimerService),我们可以通过它访问流中的事件(event)、时间戳(timestamp)、水位线(watermark),甚至可以注册“定时事件”。而在很多应用需求中,要求我们对时间有更精细的控制,需要能够获取水位线,甚至要“把控时间”、定义什么时候做什么事,这就不是基本的时间窗口能够实现的了。与BroadcastProcessFunction不同的是,这时的广播连接流,是一个KeyedStream与广播流(BroadcastStream)做连接之后的产物。

2025-02-15 21:26:56 1417

原创 大数据学习(44) - DataStream API - 输出算子(Sink)

如果我们想将数据存储到我们自己的存储设备中,而Flink并没有提供可以直接使用的连接器,就只能自定义Sink进行输出了。与Source类似,Flink为我们提供了通用的SinkFunction接口和对应的RichSinkDunction抽象类,只要实现它,通过简单地调用DataStream的.addSink()方法就可以自定义写入任何外部存储。在实现SinkFunction的时候,需要重写的一个关键方法invoke(),在这个方法中我们就可以实现将流里的数据发送出去的逻辑。

2025-02-15 21:23:07 653

原创 大数据学习(43) - DataStream API - 分流与合流

它需要实现的就是processElement1()、processElement2()两个方法,在每个数据到来时,会根据来源的流调用其中的一个方法进行处理。当然也可以直接传入键的位置值(keyPosition),或者键的字段名(field),这与普通的keyBy用法完全一致。其实根据条件筛选数据的需求,本身非常容易实现:只要针对同一条流多次独立调用.filter()方法进行筛选,就可以得到拆分之后的流了。这种实现非常简单,但代码显得有些冗余——我们的处理逻辑对拆分出的三条流其实是一样的,却重复写了三次。

2025-02-13 17:13:44 815

原创 大数据学习(42) - DataStream API

KeyedStream可以认为是“分区流”或者“键控流”,它是对DataStream按照key的一个逻辑分区,所以泛型有两个类型:除去当前流中的元素类型外,还需要指定key的类型。所以每当有一个新的数据输入,算子就会更新保存的聚合结果,并发送一个带有更新后聚合值的事件到下游算子。在实现MapFunction接口的时候,需要指定两个泛型,分别是输入事件和输出事件的类型,还需要重写一个map()方法,定义从一个输入事件转换为另一个输出事件的具体逻辑。它不会改变流的元素数据类型,所以输出类型和输入类型是一样的。

2025-02-11 15:32:30 772

原创 大数据学习(41) - DataStream API

但是,由于Java中泛型擦除的存在,在某些特殊情况下(比如Lambda表达式中),自动提取的信息是不够精细的——只告诉Flink当前的元素由“船头、船身、船尾”构成,根本无法重建出“大船”的模样;回忆一下之前的word count流处理程序,我们在将String类型的每个词转换成(word, count)二元组后,就明确地用returns指定了返回的类型。Flink从1.11开始提供了一个内置的DataGen 连接器,主要是用于生成一些随机数,用于在没有数据源的时候,进行流任务的测试以及性能测试等。

2025-01-23 10:54:27 1068

原创 大数据学习(40)- Flink执行流

一个数据流在算子之间传输数据的形式可以是一对一(one-to-one)的直通(forwarding)模式,也可以是打乱的重分区(redistributing)模式,具体是哪一种形式,取决于算子的种类。所以对于第一个任务节点source→map,它的6个并行子任务必须分到不同的slot上,而第二个任务节点keyBy/window/apply的并行子任务却可以和第一个任务节点共享slot。这就意味着map 算子的子任务,看到的元素个数和顺序跟source 算子的子任务产生的完全一样,保证着“一对一”的关系。

2025-01-22 12:10:38 899

原创 大数据学习(39)- Flink并行度

在Flink执行过程中,每一个算子(operator)可以包含一个或多个子任务(operator subtask),这些子任务在不同的线程、不同的物理机或不同的容器中完全独立地执行。例如:如上图所示,当前数据流中有source、map、window、sink四个算子,其中sink算子的并行度为1,其他算子的并行度都为2。我们一般不会在程序中设置全局并行度,因为如果在程序中对全局并行度进行硬编码,会导致无法动态扩容。在Flink中,可以用不同的方法来设置并行度,它们的有效范围和优先级别也是不同的。

2025-01-22 12:04:14 643

原创 大数据学习(38)- Flink运行时架构

JobMaster会把JobGraph转换成一个物理层面的数据流图,这个图被叫作“执行图”(ExecutionGraph),它包含了所有可以并发执行的任务。TaskManager是Flink中的工作进程,数据流的具体计算就是它来做的。Slot是资源调度的最小单位,slot的数量限制了TaskManager能够并行处理的任务数量。所以JobMaster和具体的Job是一一对应的,多个Job可以同时运行在一个Flink集群中,每个Job都有一个自己的JobMaster。,在Flink集群中只有一个。

2025-01-20 11:25:59 440

原创 大数据学习(37)- Flink部署模式

YARN上部署的过程是:客户端把Flink应用提交给Yarn的ResourceManager,Yarn的ResourceManager会向Yarn的NodeManager申请容器。运行Flinkjob的集群一旦停止,只能去yarn或本地磁盘上查看日志,不再可以查看作业挂掉之前的运行的WebUI,很难清楚知道作业在挂的那一刻到底发生了什么。Flink提供了历史服务器,用来在相应的Flink集群关闭后查询已完成作业的统计信息。这里我们所讲到的部署模式,相对是比较抽象的概念。

2025-01-20 11:05:31 632

原创 大数据学习(36)- Hive和YARN

当客户端提交SQL作业到HiveServer2时,HiveServer2会根据用户提交的SQL作业及数据库中现有的元数据信息生成一份可供计算引擎执行的计划。YARN创建的子任务会与HDFS进行交互,获取计算所需的数据,计算完成后将最终的结果写入HDFS或者本地。Hive作为数据仓库工具提供了丰富的SQL查询功能,而YARN作为资源管理和作业调度框架则确保了Hive作业能够高效、可靠地执行。这有助于提高Hive作业的执行效率,因为Hive可以依赖YARN来管理资源并调度作业,从而避免资源争抢和浪费。

2025-01-20 10:16:32 1098

原创 大数据学习(35)- spark- action算子

Transformation算子用于生成新的RDD(弹性分布式数据集),而Action算子则用于触发SparkContext提交Job作业,并将数据输出Spark系统。Action算子会遍历RDD中的数据,并返回一个结果值(如一个数字、数组或集合),或者将数据写入外部存储系统。它们提供了多种方式来输出和聚合RDD中的数据,为Spark的数据处理和分析提供了强大的支持。Spark中的Action算子是一类非常重要的算子,用于触发Spark作业的运行,并将数据输出到Spark系统外部或进行聚合计算。

2025-01-15 11:10:20 1102

原创 大数据学习(34)-mapreduce详解

MapReduce的工作流程是一个复杂而有序的过程,涉及多个组件和阶段的协同工作。通过合理的配置和优化,MapReduce可以高效地处理大规模数据,满足各种数据处理和分析的需求。mapreduce本身工作原理相对于spark来说简单很多,计算过程大概包括map阶段和reduce阶段。

2025-01-12 16:49:46 846

原创 大数据学习(33)-spark-transformation算子

是指对RDD(弹性分布式数据集)进行操作的一系列函数,用于转换或修改数据。这些操作是惰性的,意味着它们不会立即执行,而是等到一个Action操作触发时才会执行。只有当遇到Action操作时,Spark才会从血缘关系的源头开始,进行物理的转换操作,触发实际的计算。虽然Spark Transformation算子提供了丰富的数据转换功能,具有惰性执行和高效处理大规模数据的能力。在使用时,需要根据具体场景选择合适的算子,并注意避免性能瓶颈和数据倾斜等问题。

2025-01-12 16:24:50 923

原创 大数据学习(32)-spark基础总结

3.该模式下Driver运行ApplicattionMaster这个节点上,由Yarn管理,如果出现问题,yarn会重启ApplicattionMaster(Driver)所以在spark on yarn中提高资源利用率,在已有YARN的场景下让Spark收到YARN的调度可以更好的管控资源提高利用率并方便管理。Driver角色运行在YARN容器内或提交任务的客户端进程中真正干活的Executor运行在YARN提供的容器内。1.Driver程序在YARN集群中,和集群的通信成本低。

2025-01-10 17:24:38 647

原创 数学建模-最优包衣厚度终点判别法-三(Bayes判别分析法和梯度下降算法)

针对问题三,我们选取问题一提取的特征峰数据,对不同的包衣时间段各谱区的吸收值,最优包衣在谱区的吸收值和素片在谱区的吸收值进行Bayes判别。以问题二的聚类结果为基础数据,对问题一所提取的特征峰数据标记初始分组,通过Bayes准则下的判别分析方法,对数据进行判别再次划分类别,通过比对Bayes判别前后样本所属类别与初始分组是否一致,计算判别的准确性。对于解决不确定统计分析的问题,每个类别的样本取得不同特征向量的概率,实现依据某个待识别向量计算该样本每个类别的概率。不同包衣时间下的肠溶片对波长的吸收值。

2024-04-12 17:40:50 1080

原创 数学建模-最优包衣厚度终点判别法-二(K-Means聚类)

针对问题二,本文通过使用聚类算法(K-Means),通过比较样本与聚类中心的距离,了解样本与该聚类的相似性或者距离程度。包衣技术要求对药片进行多次包衣和对包衣终点并没有明确指标,本问题通过在提取的有效特征峰基础上,根据聚类汇总分析各聚类类别的频数:此步骤是对第一步的补充,旨在了解每个聚类中样本的数量和分布。聚类中心是聚类算法中的重要概念,代表了该聚类的主要特征和中心思想。再在python中引入绘图包,引入使用K-Means聚类分析得到的聚类中心坐标,得到三种类别数据的聚类散点图,如图6所示。

2024-04-10 12:17:14 645

原创 数学建模-最优包衣厚度终点判别法(主成分分析)

包衣是将片剂的外表面均匀地包裹上一层衣膜的过程,旨在控制药物在胃肠道中的释放部位和速度,遮盖苦味或不良气味,防潮、避光,改善外观等。然而,包衣膜太薄或太厚都不利于药效,并且包衣终点的判断方法目前存在一定的难度。轴,在此基础上进行主成分分析,在进行特征根选取时,发现有两种情况可以选择,第一种情况是选取特征根大于1的成分,可以选取出2个主成分,第二种情况是按照公式(1)算取方差贡献率以选取特征根,可以选取出3个主成分。问题三:对于不同的包衣厚度,通过建立模型分析包衣之间的关联性,判别出最优的包衣厚度。

2024-04-05 21:52:55 1435

原创 数学建模-模糊性综合评价模型

本文通过模糊综合评价算法对2013年到2021年的中医药市场状况做定性分析和评判,旨在通过数学模型寻找到中医药市场现状和所涉及中医药市场影响因素之间的关系、对于中国医药市场现状的分析理解以及近9年中医药市场影响因素对中医药市场的综合影响作用大小变化。其中,影响因素的权重分配对评价结果的影响较大,本文采用熵值法和灰色关联度法的权重集来建立模糊综合评价模型,利用这两种方法计算得到的权重略有不同,但对于中医药市场的影响因素进行评估时,两种方法的结果相似,具有一定的可信度。建立合适的隶属函数是良好评价模型的基础。

2024-03-12 23:01:26 1656

原创 数学建模-多目标规划算法(美赛建模)

主要以安大略湖为核心,其它湖为次要考虑因素的利益相关者的分析。1. Lake Ontario 水位管理模型:1.1 水位控制因素:- 湖泊补给源: 入湖流量 I(t)- 湖泊排水源: 排水流量 O(t)- 湖泊蒸发: 蒸发量 E(t)- 湖泊降雨: 降雨量 R(t)- 湖泊人工控制: 人工控制量 U(t)1.2 水位模型:湖泊水位模型可以采用动态水库模型:2. 利益相关方和目标分析:2.1 利益相关方:- 当地居民: 洪水风险降低、水质保护。- 渔业: 水生态系统保护。

2024-03-12 12:37:21 1844 1

原创 数学建模-敏感度分析(美赛)

在输出中观察到的任何更改都将明确地由单个变量的更改引起。此外,通过每次更改一个变量,可以将所有其他变量固定在它们的基线值,增加了结果的可比较性(与基线情况相比较),并将计算机程序崩溃(同时改变几个因素的情况)的几率降至最低。最简单和最常见的方法之一是每次更改一个因素(OAT),我们这里改变的量也就是单一的环境变化量,以查看这会对输出产生什么影响。移动一个输入变量,保持其他变量的基线值(nominal value),然后将变量返回到其标称值,然后以相同的方式对每个其他输入进行重复。

2024-03-10 22:17:50 2244

原创 数学建模-动态规划&遗传算法(美赛运用)

(crossover)和变异(mutation)等现象,从任一初始种群(Population)出发,通过随机选择、交叉和变异操作,产生一群更适合环境的个体,使群体进化到搜索空间中越来越好的区域,这样一代一代不断繁衍进化,最后收敛到一群最适应环境的个体(Individual),从而求得问题的优质解。不同的是遗传算法在本基础上加上往年同月或同季节中的河流量变化值作为参考,在该动态网络流模型中的再次进行相应的河流流量调整从而得到最后相对更加准确的结果。此,各种各样的利益相关者都对流入和流出湖泊的水的管理感兴趣。

2024-03-09 20:13:11 1777 6

原创 算法-删除有序数组中的重复项

不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(1)额外空间的条件下完成。两种查找算法思想并不相同。

2024-03-07 12:32:55 206 2

原创 数学建模-多目标规划

当想x(1)=0.5625,x(2)=5.625时,两目标函数最大值分别为f(1)=9.5625, f(2)=19.125。第一个函数最大值(我们先求最小值)第二个函数最大值(我们先求最小值)合在一起求两个函数的最大值。例:求下列函数最大值。先建立fun.m函数。

2024-02-01 12:04:23 570

原创 数学建模-灰色预测模型

(计算残差,abs表示绝对值)error2(i)=error1(i)/x0(i);求出相对误差检验,并说明精度级别。相对误差:0.00467,良好。

2024-02-01 12:00:20 715

原创 数学建模-退火算法和遗传算法

W]=load('D:100个目标经度纬度.txt');for k=1:dai %产生 0~1 间随机数列进行编码。[E]=xlsread('D:100个目标经度纬度');[E]=xlsread('D:100个目标经度纬度');个目标的数据, 数据按照表格中的位置保存在纯文本文件。%在父代和子代中选择优良品种作为新的父代。在父代和子代中选择优良品种作为新的父代。e=e*pi/180;%通过改良圈算法选取优良父代 A。通过改良圈算法选取优良父代。

2024-02-01 11:55:35 1126

原创 大数据学习(32)hive优化方法总结

&&大数据学习&&🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博主哦🤞Hive优化主要从以下几个方面考虑: 数据倾斜:对于数据倾斜问题,可以尝试进行数据重分布,将倾斜的数据进行重新整理。也可以通过多线程处理和数据分箱等技术进行优化。 减少job数:对于大量的小任务,可以尝试进行任务的合并,减少任务的启动次数,从而提高效率。 合理设置map和reduce的ta

2024-01-14 10:33:05 479

原创 大数据学习(31)-Spark常用及重要特性

以上仅仅是部分spark在执行过程中的重要知识,这里只做了简要解释与介绍。深入了解可以看看其他博主的文章。上述的SortMergeJoin转换为BroadcastHashJoin在之前的文章中有提及过,还有hive的内存管理机制等等,在我的主页都可以查看。spark中引入过很多不常用的特性。但是非常重要的特性。

2024-01-03 22:01:14 622

原创 大数据学习(30)-Spark Shuffle

2. SortShuffle主要是对磁盘文件进行合并来进行文件 数量的减少, 同时两类Shuffle都需要经过内存缓冲区 溢写磁盘的场景。所以可以得知, 尽管Spark是内存迭 代计算框架, 但是内存迭代主要在窄依赖中. 在宽依赖(Shuffle)中磁盘交互还是一个无可避免的情况. 所 以, 我们要尽量减少Shuffle的出现, 不要进行无意义的Shuffle计算。在Spark的两个阶段中, 总是前一个阶段产生 一批Map提供数据, 下一阶段产生一批Reduce接收数据。基本和未优化的一致,不同点在于。

2023-12-29 09:12:01 721

空空如也

空空如也

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

TA关注的人

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