自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spark架构体系

Job:RDD每一个行动操作都会生成一个或者多个调度阶段 调度阶段(Stage):每个Job都会根据依赖关系,以Shuffle过程作为划分,分为Shuffle Map Stage和Result Stage。每个Stage对应一个TaskSet,一个Task中包含多Task,TaskSet的数量与该阶段最后一个RDD的分区数相同。Task:分发到Executor上的工作任务,是Spark的最小执行单元。

2023-07-06 21:52:15 986 1

原创 scala异常和IO

我们将可疑代码封装在 try 块中。在 try 块之后使用了一个 catch 处理程序来捕获异常。如果发生任何异常,catch 处理程序将处理它,程序将不会异常终止。Scala 的异常的工作机制和 Java 一样,但是 Scala 没有“checked(编译期)”异常, 即 Scala 没有编译异常这个概念,异常都是在运行的时候捕获处理。异常捕捉的机制与其他语言中一样,如果有异常发生,catch 子句是按次序捕捉的。

2023-07-05 21:15:18 549

原创 Scala泛型

object _11_泛型 {//[A] 这个代表的就是泛型 ==》 在创建对象的时候,可以指定需要传进去的类型//作用就是在创建对象的时候,可以对传进去的参数一个约束,当设置泛型位int之后,那么传进去的值就必须是int//自己写一个?单纯演示泛型语法的定义,没有什么实际的意义/*** 将泛型定义在类上,那么在整个类中,都可以使用该泛型,作用域是整个类*///如果设置泛型位Int类型,那么方法的参数就只能传Int类型。

2023-06-30 22:53:23 548

原创 Scala高阶语法

注:该偏函数的功能是返回输入的 List 集合的第二个元素使用构建特质的实现类(使用的方式是PartialFunction的匿名子类)PartialFunction 是个特质(看源码)构建偏函数时,参数形式 [Any, Int]是泛型,第一个表示参数类型,第二个表示返回参数当使用偏函数时,会遍历集合的所有元素,编译器执行流程时先执行isDefinedAt()如果为true ,就会执行 apply, 构建一个新的Int 对象返回。

2023-06-29 21:30:32 779 2

原创 Scala集合

方式一:创建一个长度固定的数组,后面再赋值//(1)数组定义//(2)数组赋值//(2.1)修改某个元素的值//(2.2)采用方法的形式给数组赋值//(3)遍历数组//(3.1)查看数组//(3.2)普通遍历println(i)//(3.3)简化遍历//(4)增加元素(由于创建的是不可变数组,增加元素,其实是产生新的数组)方式二:使用 apply 方法创建数组对象,并且在定义数组的时候直接赋初始值println(i)数组中的方法:Scala// 数组中的最大和最小值。

2023-06-27 22:54:09 422 2

原创 Scala面向对象

使用此方法时,可以在main函数中不通过new来创建一个对象,即可以不用专门的一次一次地进行实例化,加载创建对象的这个类的时候,会自动调用apply这个方法,类似Java中的static静态块。在 Scala 中, 使用 abstract 修饰的类称为抽象类. 在抽象类中可以定义属性、未实现的方法(抽象方法)和具体实现的方法。Scala 的类只能够继承单一父类,但是可以实现(继承,混入)多个特质(Trait),使用的关键字是 with 和 extends。特质中可以定义属性和抽象方法和方法的实现。

2023-06-26 22:38:18 342 2

原创 Scala方法和函数

val / var 函数名称=(函数的参数列表) => 函数体x + y// 函数体中的内容只有一行代码可以省略大括号val / var 函数名称:(输入参数类型)=> 返回值类型 = (参数的引用)=> 函数体x+yadd2 函数名(Int ,Int) 要处理的参数类型列表=>Int 函数处理完数据的返回值类型=(x,y) 传入实际参数的接收变量名{x+y} 函数体 运算求和注意: 代码块的最后一行是函数的返回值 ,需要和=>(Int)类型保持一致。

2023-06-25 23:13:29 550 1

原创 scala的基本语法

Scala 内置控制结构特地去掉了 break 和 continue,是为了更好的适应函数式编程,推荐使用函数式的风格解决break和continue的功能,而不是一个关键字。由于Java有基本类型,而且基本类型不是真正意义的对象,即使后面产生了基本类型的包装类,但是仍然存在基本数据类型,所以Java语言并不是真正意思的面向对象。• scala中的数据类型和java中数据类型最大的区别就是scala中的数据类型都是对象 , 也就是scala中没有原生的数据类型!个就是自动类型转换(隐式转换)。

2023-06-24 23:35:14 546 2

原创 hadoop -- Yarn资源管理

Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM为AM返回的资源便是用Container表示。NM是每个节点上的资源和任务管理器,一方面,它会定时地向RM汇报本节点上的资源使用情况和各个Container的运行状态;可以把Hadoop YARN理解为相当于一个分布式的操作系统平台,而MapReduce等计算程序则相当于运行于操作系统之上的应用程序,YARN为这些程序提供运算所需的资源(内存、CPU等)。

2023-06-23 22:45:07 1353

原创 MapReduce分布式计算(四)

当提交运行一个程序时,这个程序的大多数的Task都已经运行结束了,只有某一个Task一直在运行,迟迟不能结束,导致整体的进度卡在99%或者100%,这时候就可以判定程序出现了数据倾斜的问题。分布式计算中最常见的,最容易遇到的问题就是数据倾斜。

2023-06-22 21:21:36 323

原创 MapReduce分布式计算(三)

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.那么MovieBean需要实现hadoop序列化。

2023-06-21 23:00:42 143

原创 MapReduce分布式计算(二)

combiner属于优化方案,所以无法确定combiner函数会调用多少次,可以在环形缓存区溢出文件 时调用combiner函数,也可以在溢出的小文件合并成大文件时调用combiner。hadoop允许用户对map的输出数据进行处理,用户可自定义combiner函数(如同map函数和 reduce函数一般),其逻辑一般和reduce函数一样,combiner的输入是map的输出,combiner 的输出作为reduce的输入,很多情况下可以直接将reduce函数作为conbiner函数来使用。

2023-06-19 22:26:51 2694

原创 MapReduce分布式计算(一)

MapReduce是Hadoop系统核心组件之一,它是一种可用于大数据并行处理的计算模型、框架和平台,主要解决海量数据的计算,是目前分布式计算模型中应用较为广泛的一种。计算a.txt文件中每个单词出现的次数通过以上的方式 计算出来了a.txt文件中每个单词出现的次数,但是我们想一下 ,如果a.txt文件非常大,怎么办?比如有一个a.txt文件10个T的大小。这时一台计算机就没有办法计算了,因为我们根本存储不了,计算不了,那么一台计算机无法计算,就使用多台计算机来进行计算!

2023-06-18 22:25:57 1031 1

原创 hadoop基础(二)

网络拓扑及机架感知网络拓扑节点距离:两个节点到达共同父节点的距离和机架感知 ( 副本节点的选择 )例如:500个节点,上传数据my.tar.gz,副本数为3,根据机架感知,副本数据存储节点的选择。官方注释上传流程BlockHDFS中的文件在物理上是分块存储的,即分成Block;block在Hadoop不同版本大小不同:Pipeline,中文翻译为管道。这是HDFS在上传文件写数据过程中采用的一种数据传输方式。

2023-06-17 22:16:27 1135

原创 hadoop基础

网络拓扑及机架感知网络拓扑节点距离:两个节点到达共同父节点的距离和机架感知 ( 副本节点的选择 )例如:500个节点,上传数据my.tar.gz,副本数为3,根据机架感知,副本数据存储节点的选择。官方注释上传流程BlockHDFS中的文件在物理上是分块存储的,即分成Block;block在Hadoop不同版本大小不同:Pipeline,中文翻译为管道。这是HDFS在上传文件写数据过程中采用的一种数据传输方式。

2023-06-16 21:01:20 803

原创 scala练习

数据如下 :每个字母代表一个人 , 统计任意一个人和其他人的共同好友。获取到我的朋友们,朋友们都放在数组里面,里面的元素就是一个个的朋友对象。按照起始得位置确定这一行中一共有哪些点,后面才能判断哪些点是重合的。关联条件是user_id = user_id。前面的是我自己,:后面的是我的朋友们。//获取到最后的个数。看是不是有共同好友,是不是取交集。将订单数据转换成list集合。将用户数据转换成map集合。需求:计算每天的pv和uv。实现left join。需求五:pv,uv案例。

2023-06-15 22:29:10 818

原创 scala练习

Iterator[String] ==》 同样的返回一个迭代器,迭代器里面放得是Array[String] 数组里面每一个元素放得都是一个个的单词。对每一个单词进行分组,相同的单词分在一组,key就是单词,value是一个list,所有相同的单词都放在这个list中。数组中每一个元素的key都是一样的,只是温度不一样,现在需要将整个数组转换成城市,平均温度。获取到我的朋友们,朋友们都放在数组里面,里面的元素就是一个个的朋友对象。将所有的数据都放在一个数组或者集合中。前面的是我自己,:后面的是我的朋友们。

2023-06-14 22:51:23 1202

原创 scala

集合中的min和max可以获取任意集合中的最小和最大值 ,但是如果集合中存储的是用户自定义的类 , 或者是按照Map集合中的key, value规则排序的话就需要用户指定排序规则。注意Map集合的用法:map函数遍历每个元素处理返回原集合类型的新集合 , 也可以不返回数据列表,数组,Map中都有map函数 元组中没有map函数。map+flatten方法的组合 ,先遍历集合中的每个元素 , 再按照指定的规则压平, 返回压平后的新的集合。

2023-06-13 20:06:09 1314

原创 scala

使用此方法时,可以在main函数中不通过new来创建一个对象,即可以不用专门的一次一次地进行实例化,加载创建对象的这个类的时候,会自动调用apply这个方法,类似Java中的static静态块。含有抽象方法的类就是抽象类。scala的类有且仅有一个主构造器,要想提供更加丰富的构造器,就需要使用辅助构造器,辅助构造器是可选的,它们叫做this def this。Scala 的类只能够继承单一父类,但是可以实现(继承,混入)多个特质(Trait),使用的关键字是 with 和 extends。

2023-06-12 22:03:05 1153

原创 scala

当一个函数,我们确定没有正常的返回值,可以用 Nothing 来指定返回类型,这样有一个好处,就是我们可以把返回的值(异常)赋给其它的函数或者变量(兼容性)需求:现在hadoop的课程是199元,如果说今天是程序员节(10月24号),那么今天购买商品打6折,如果不是,就需要按照原价购买,最后将订单金额打印在控制台上。由于Java有基本类型,而且基本类型不是真正意义的对象,即使后面产生了基本类型的包装类,但是仍然存在基本数据类型,所以Java语言并不是真正意思的面向对象。用作不返回任何结果的方法的结果类型。

2023-06-11 21:45:04 995

原创 scala

由于scala是基于java来开发的, 编写的java类可以使用javac命令编译成.class文件被JVM加载到内存中执行!那么scala可以通过scalac命令将编写的scala文件编译成.class文件一样被JVM加载到内存中,因此Scala是运行在JVM平台上的,所以安装Scala之前要安装JDK!

2023-06-10 22:31:35 944

原创 Hbase

将 Store 中多个 HFile 合并为一个相对较大的 HFile 过程中会选取一些小的、相邻的 StoreFile 将他们合并成一个更大的 StoreFile,对于超过 TTL 的数据、更新的数据、删除的数据仅仅只是做了标记,并没有进行物理删除。当region过大的时候,region会被拆分为两个region,HMaster会将分裂的region分配到不同的regionserver上,这样可以让请求分散到不同的RegionServer上,已达到负载均衡 , 这也是HBase的一个优点。

2023-06-09 21:54:37 667

原创 Hbase

HBase擅长于存储结构简单的海量数据但索引能力有限,而Oracle,mysql等传统关系型数据库(RDBMS)能够提供丰富的查询能力,但却疲于应对TB级别的海量数据存储,HBase对传统的RDBMS并不是取代关系,而是一种补充。Hbase 是根据列族来存储数据的。列式存储的最大好处就是,其数据在表中是按照某列存储的,这样在查询只需要少数几个字段时,能大大减少读取的数据量。中没有库的概念,说一个数据说的是哪一个名称空间下的那一张表下的哪一个行键的哪一个列族下面的哪一个列对应的是这个数据。

2023-06-08 22:22:20 987 1

原创 sql练习

注意:可能会存在同一个日期入职的员工,所以入职员工时间排名倒数第三的员工可能不止一个。示例:解题思路:思路一:降序排列找第三个(第一个bug是不是就显示出来了) 所以只能用方法二思路二:一样是是大行好(但是用哪个函数呢??是不是DENSE_RANK)

2023-06-07 20:15:05 419

原创 kafka3

与事务有着莫大的关联,这个参数的默认值为“read_uncommitted”,意思是说消费端应用可以看到(消费到)未提交的事务,当然对于已提交的事务也是可见的。对未完成的事务而言,LSO 的值等于事务中第一条消息的位置(firstUnstableOffset),对已完成的事务而言,它的值同 HW 相同;这个时候,才完成数据的写入,并且分区HW(分区HW指的就是leader副本的HW)更新为3,代表消费者可以消费offset=0,1,2的三条消息了,上面的过程就是kafka处理消息写入和备份的全流程。

2023-06-06 21:54:12 489

原创 kafka二

如果A消费者消费掉的一批消息还没来得及提交offset,而它所负责的分区在rebalance中转移给了B消费者,则有可能发生数据的重复消费处理。用hashset来实现很显然会出问题,如果数据量一直往上增长,会出现oom的问题,而且占用资源越来越多,影响电脑性能!再均衡的过程中,还是会让各消费者先取消自身的分区,然后再重新分配(只不过是分配过程中会尽量让原来属于谁的分区依然分配给谁)这个方法是当上面的分配情况全部取消以后,调用这个方法,来再次分配,这是在均衡分配后的情况。

2023-06-05 21:58:30 564

原创 kafka

假设刚刚提交完一次消费位移,然后拉取一批消息进行消费,在下一次自动提交消费位移之前,消费者崩溃了,那么又得从上一次位移提交的地方重新开始消费,这样便发生了重复消费的现象(对于再均衡的情况同样适用)。如果消费者采用的是正则表达式的方式(subscribe(Pattern))订阅, 在之后的过程中,如果有人又创建了新的主题,并且主题名字与正表达式相匹配,那么这个消费者就可以消费到新添加的主题中的消息。在默认的方式下,消费者每隔5秒会将拉取到的每个分区中最大的消息位移进行提交。

2023-06-04 23:16:33 759

原创 zookeeper

ephemeralOwner = 0x0 临时节点标示,当前节点如果是临时节点,则存储的创建者的会话id(sessionId),如果不是,那么值=0。System.out.println("===========分隔符===============");System.out.println("正在删除的子节点是:"+path+"/"+child);System.out.println("/节点下的所有的子节点有: /"+s);#那么应该如何删除临时节点呢?

2023-06-02 21:59:42 924

原创 Doris

执行 Schema Change 的基本过程,是通过原 Index 的数据,生成一份新 Schema 的 Index 的数据。其中主要需要进行两部分数据转换:一是已存在的历史数据的转换;二是在 Schema Change 执行过程中,新到达的导入数据的转换。创建作业Schema Change 的创建是一个异步过程,作业提交成功后,用户需要通过 SHOW ALTER TABLE COLUMN 命令来查看作业进度。

2023-06-01 23:16:45 2194

原创 sql练习

思路一:降序排列找第三个(第一个bug是不是就显示出来了) 所以只能用方法二。注意:可能会存在同一个日期入职的员工,所以入职员工时间排名倒数第三的员工可能不止一个。注意:可能会存在同一个日期入职的员工,所以入职员工时间排名倒数第三的员工可能不止一个。思路二:一样是是打行号(但是用哪个函数呢?思路一:降序排列找第三个(第一个bug是不是就显示出来了) 所以只能用方法二。思路二:一样是是打行号(但是用哪个函数呢?思路二:一样是是大行好(但是用哪个函数呢?思路二:一样是是大行好(但是用哪个函数呢?

2023-05-31 23:01:37 550

原创 redis

需求:使用redis模拟手机验证码发送,验证码有效期60s,验证验证码输入不能超过3次,超过3次今天就没机会了。3、启动linux中redis服务端,找到redis.conf,启动执行下面命令即可启动。输入验证码,调用验证验证码函数,若正确,直接退出程序,若不正确,三次后退出。1、首先写一个函数随机产生六位验证码,使用random函数。①通过手机号拼接字符串,获取验证码的key值。输入手机号,并确认是否发送验证码。2、判断验证码是否正确。②验证验证码是否正确。

2023-05-30 23:24:44 36

原创 doris

3.对象:"a2":{"k3":"v33", "k4": 200,"a2": [{"k5":"v42", "k6": 600}]}-- 如果 json_string 格式不对,或 json_path 格式不对,或无法找到匹配项,则返回 NULL。-- 解析并获取 json 字符串内指定路径的double,int,string 类型的内容。-- 返回一行中 n个column的最小值.若column中有NULL,则返回NULL.返回移除所有的指定元素后的数组,如果输入参数为NULL,则返回NULL。

2023-05-29 21:46:22 1063

原创 doris

1.求的的的总销售额2.求每个用户、每个城市的总消费额3.求每个用户的总消费额。

2023-05-28 22:32:46 673

原创 一键启停脚本

echo " =================== 关闭 fe ==================="echo " =================== 启动集群 ==================="目录/命令 --daemon"echo " --------------- 启动 ---------------"ssh linux01 "/source /etc/profile;start 或者 stop。

2023-05-27 21:27:55 1355

原创 Doris

表中的列按照是否设置了 AggregationType,分为 Key(维度列)和 Value(指标列),没有设置 AggregationType 的称为 Key,设置了 AggregationType 的称为 Value。当我们导入数据时,对于 Key 列相同的行会聚合成一行,而 Value 列会按照设置的AggregationType 进行聚合。每一个用户最后一次访问我们页面的时间,用户消费的总金额,用户停留在我们页面上的最大最小时长。SUM:求和,多行的 Value 进行累加。用户最后一次访问时间。

2023-05-26 22:06:31 809

原创 Apache Doris

其中 Leader 和 Follower 组成一个 Paxos 选择组,如果Leader 宕机,则剩下的 Follower 会自动选出新的 Leader,保证写入高可用。Doris 的架构很简洁,只设 FE(Frontend)前端进程、BE(Backend)后端进程两种角色、两个后台的服务进程,不依赖于外部组件,方便部署和运维,FE、BE 都可在线性扩展。更名为 Doris ),在百度内部,有超过 200 个产品线在使用,部署机器超过 1000 台,单一。当然,停止后,正在其上运行的作业会失败,重试即可。

2023-05-25 19:33:58 1443

原创 预习doris

Doris 的实现架构脱胎自 Apache Impala 和 Google Mesa 系统,并进行了大量的改造和优化,最终形成了今天大家看到的这款架构优雅、性能卓越、功能丰富、简单易用的 OLAP 数据库系统。报表类数据分析,数据分析以及查询的模式相对比较固定,而且后台 SQL 的模式往往都是确定的。在 Doris 平台中,报表类查询时延一般在秒级以下。这里提到的多维分析,同样要求数据是结构化的,适用于查询相对灵活的场景,例如数据分析条件以及聚合维度等方面不是很确定,一般将此类数据分析定义为多维分析。

2023-05-24 21:23:00 614

原创 hive函数

'[{"name":"柳岩","sex":"女","age":"38"},{"name":"唐嫣","sex":"女","age":"18"}]', '$[0].name');'[{"name":"柳岩","sex":"女","age":"38"},{"name":"唐嫣","sex":"女","age":"18"}]', '$.[0]');---------String Functions字符串函数-— —---------

2023-05-23 21:59:32 311

原创 hive02

with t1 as (select *, if(gender == 'M', '男', '女') as ch_gender from yg)select *, if(gender == 'M', '男', '女') as ch_gender。if(gender == 'M', '男', '女') as ch_gender,sum(`if`(gender = 'M', 1, 0)) `男`,sum(`if`(gender = 'F', 1, 0)) `女`

2023-05-22 21:18:09 445

原创 hadoop05

2023-05-21 21:37:17 27

空空如也

空空如也

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

TA关注的人

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