- 博客(62)
- 收藏
- 关注
原创 Spark-core面试知识点
针对列表当中的每一个元素进行操作,操作完成后返回一个新的列表,操作之前是多少个元素,操作之后还是多少个元素,不会增加,不会减少。根据RDD的执行流程构建DAG有向无环图,构建好后,采用回溯方法,从后往前推,遇到窄依赖包含到当前stage中,遇到宽依赖断开形成stage。窄依赖:父RDD当中的一个分区只能被子RDD当中的一个分区所依赖。宽依赖:父RDD当中的一个分区会被子RDD当中的多个分区所依赖。执行算子:带动转换算子运算,并将结果输出或保存到指定地点。特点:不可变,可分区,里面的元素可以并行计算的集合。
2024-04-25 17:08:00 334 1
原创 kafak知识总结(2)
第一个segment文件段默认命名是20位0,当分裂以后,就是用当前segment文件段当中.log文件当中第一条数据的偏移量命名。在kafka当中,生产者生产数据,是将数据保存到分区里面的segment文件段当中,但是segment文件段是逻辑存在的。每个segment文件段默认大小是1G,如果超过1G就会分裂出来第二个segment文件段,以此类推。1:生产者生产数据,只要leader保存成功,不管follower是否同步成功,继续发送下一批数据。kafka当中数据的默认保存时长是168个小时=7天。
2024-04-24 08:00:00 304
原创 fakak详解(2)
为保证producer发送的数据,能可靠的发送到指定的topic,topic的每个partition收到producer发送的数据后,都需要向producer发送ack(acknowledgement确认收到),如果producer收到ack,就会进行下一轮的发送,否则重新发送数据,如图-29所示。在.index文件中,存储的是key-value格式的,key代表在.log中按顺序开始第n条消息,value代表该消息的位置偏移。即使消息不在index记录中,在已有的记录中查找,范围也大大缩小了。
2024-04-23 18:46:53 723
原创 KaFak知识总结(1)
假如有3个消费者,每个消费者消费一个分区当中的数据;在kafka当中,有一个isr列表,这个列表维护所有分区的副本,当某一时刻,分区leader宕机了,isr列表就会从自身维护的副本当中选择一个最适合上位的副本上位成为leader,继续和producer和consumer进行通信。在kafka当中,每个分区都维护者独属于自己这个分区一份偏移量,分区当中,每条数据都有一个独有且唯一的偏移量,用来标记消息,将来如果这条消息被消费,就会进行记录偏移量,再来消费就会从上次消费的偏移量继续往后开始消费。
2024-04-23 08:58:41 648
原创 Kafak详解(1)
但遗憾的是,我们并没有看到刚刚生产的数据,这很好理解,比如新闻联播每晚7点开始了,结果你7点15才打开电视看新闻,自然7点到7点15之间的新闻你就会错过,如果你想要看这之间的新闻,那么就需要其提供回放的功能,幸运的是kafka不仅提供了从头开始回放数据的功能,还可以做到从任意的位置开始回放或者读取数据,这点功能是非常强大的。topic是kafka非常重要的核心概念,是用来存储各种类型的数据的,所以最基本的就需要学会如何在kafka中创建、修改、删除的topic,以及如何向topic生产消费数据。
2024-04-22 17:28:10 1294
原创 Scala详解(8)
当编译器对当前代码第一次编译失败的时候,会在当前的环境中查找能够让代码编译通过的方式,用于将当前的类型进行转换,进行二次编译,这个过程就称之为隐式转换隐式转换包含隐式函数、隐式参数和隐式类Scala运行的时候,自动加载Predef类,Predef类中定义了大量的隐式转换。
2024-04-19 18:14:52 677
原创 淘宝用户购物行为数据集
UserBehavior是阿里巴巴提供的一个淘宝用户行为数据集,用于隐式反馈推荐问题的研究。文件名称说明包含特征包含所有的用户行为数据用户ID,商品ID,商品类目ID,行为类型,时间戳本数据集包含了2017年11月25日至2017年12月3日之间,有行为的约一百万随机用户的所有行为(行为包括点击、购买、加购、喜欢)。数据集的组织形式和MovieLens-20M类似,即数据集的每一行表示一条用户行为,由用户ID、商品ID、商品类目ID、行为类型和时间戳组成,并以逗号分隔。列名称说明用户ID。
2024-04-17 19:24:36 1062
原创 Scala详解(6)
Scala中字符串同样分为可变字符串和不可变字符串,不可变字符串使用String来定义,可变字符串使用的是来定义// 可变字符串// Scala中既然将字符串看作是集合中的成员,那么字符串其实就是字符的集合str += 'a'// 产生一个新的字符串// 将结果转化为一个ArrayBuffer返回。
2024-04-17 18:32:15 1209
原创 Scala详解(5)
集合本质上就是一个用于存储1个到多个数据的容器。Seq(序列),Set(集合)和Map(映射)。基于这三大类,衍生出来众多的子类序列:元素有序可重复集合:元素无序不可重复映射:键值对结构数据在Scala中,所有的集合都混入了Iterable特质,意味着所有的集合都可以被迭代遍历Scala中的集合分为可变集合()和不可变集合(所谓的不可变集合,指的是集合被创建好之后,长度不可变,且其中的元素也不能改变。如果对不可变集合中的元素进行增删操作,那么不会改变原集合,而是会产生一个新的集合。
2024-04-16 17:08:32 553 1
原创 Scala详解(4)
定义类表示矩形(Rectangle),提供对外获取周长(girth)和面积(area)的函数,并且为这个矩形类提供一个子类表示正方形(Square)
2024-04-15 17:00:23 956
原创 Scala详解(3)
在Scala中,依然是通过package来定义包package 包名// 例如注意:在Java中,一个.java文件中只能有一个package语句;在Scala中,允许定义多个package语句,根据定义顺序,后定义的包是前边包的子包// 方式一:// 方式二package pa// 方式三package pa// 方式四为了表示层级关系,还提供了嵌套风格注意:在Java中,package语句需要放在.java文件的第一行,Scala中不做要求。
2024-04-12 16:51:23 638 4
原创 Scala详解(2)
将一段逻辑进行封装便于进行重复使用,被封装的这段逻辑就是函数。在Scala中,必须通过def来定义函数基本语法def 函数名(参数列表) : 返回值类型 = {函数体return 返回值案例// 案例:定义函数计算两个整数的和// 标准写法// 因为在Scala中,所有的结构都必须有返回值// 所以在函数中,如果不指定,默认会将最后一行的计算结果作为返回值// 也因此可以省略return不写a + b// 如果函数体只有一句话,那么此时也可以省略{}不写。
2024-04-12 08:45:11 594
原创 Scala详解(1)
在Java中,基本类型、static等都不符合面向对象的规则。Scala作为一门完全面向对象的语言,不支持基本类型、static等Any,即所有的类都是Any的子类AnyVal(任意数值)和AnyRef(任意引用)。无论AnyVal还是AnyRef都是类AnyVal包含了常用的数据类型ByteShortIntLongFloatDoubleCharBooleanUnit:对应了Java中的void。当一个函数没有返回值的时候,返回值类型就是Unit。Unit只包含了一个对象,就是()
2024-04-10 18:35:28 808
原创 HBase详解(4)
Phoenix将类SQL在底层转化为HBase API操作来执行,所以Phoenix中的每一个字段对应了HBase的命令在Phoenix中,建表的时候需要指定一个或者多个字段作为主键,主键被映射成HBase的行键Phoenix在建表的时候,如果没有指定列族,那么这些列会默认被放入0列族注意:Phoenix会自动的将表明、列名等转化为大写形式,如果要保持小写形式,那么需要使用双引号来标记在HBase中,查询数据的时候,需要指定行键,通过行键来锁定数据。
2024-04-09 18:34:37 1022 1
原创 HBase详解(3)
Phoenix是Apache提供的基于HBase的JDBC的工具,提供了类SQL语言来操作HBasePhoenix进行数据分析的OLTP的框架,可以预HBase、Flume、Hive、Spark、Flink等框架进行集成特点优点:提供了类SQL语言来操作HBase的数据,降低了学习HBase的成本缺点:提供的语言并不是标准的SQL;底层是将SQL转化为HBase API操作,所以效率不如直接操作HBase。
2024-04-09 18:33:34 1154 2
原创 HBase详解(2)
在HBase中,会从行键方向上对表来进行切分,切分出来的每一个结构称之为是一个HRegion切分之后,每一个HRegion会交给某一个HRegionServer来进行管理。HRegionServer是HBase的从节点,每一个HRegionServer可以管理多个HRegion如果新建了一个表,那么这个表中只包含1个HRegion。
2024-04-07 16:30:40 1087
原创 HBase详解(1)
HBase是Yahoo!公司开发的后来贡献给了Apache的一套开源的、分布式的、可扩展的、基于Hadoop的非关系型数据库(),因此HBase并不支持SQL(几乎所有的非关系型数据库都不支持SQL),而是提供了一套单独的命令和API操作关系型数据库和非关系型数据库针对的数据是不同的关系型数据库存储的数据都是结构化数据,即同一个表中所有的数据的结构都是完全相同的,所以此时可以采用SQL(Structed Query Language,结构化查询语言)来进行查询。
2024-04-02 18:48:13 1332
原创 HBase(超级无敌详细PROMAX讲解版)
简介概述图-1 HBase图标HBase原本是由Yahoo!公司开发的后来贡献给了Apache的一套开源的、基于Hadoop的、分布式的、可扩展的非关系型数据库(Non-Relational Database),因此HBase不支持SQL(非关系型数据库基本上都不支持SQL),而是提供了一套单独的命令用于操作HBase。HBase本身是仿照了Google的BigTable(Google的论文<Google's Bigtable: A Distributed Storage Sys
2024-04-02 16:48:49 1349
原创 Hive详解(5)
textfileRCFileorcparquetavro和avro和将文件以序列形式来存储(序列化文件)如果不指定,那么HDFS默认将文件以textfile格式存储textfileavro和是行存储格式,RCFileorc和parquet是列存储格式textfile不支持修改(delete和update),但是列存储格式都支持delete和update操作,效率非常低。
2024-04-01 18:25:51 1554
原创 Hive详解(4)
聚合函数,例如sumavgmaxmin等移位函数:以当前行为基础,来处理第前n行的数据:以当前行为基础,来处理第后n行的数据ntile(n):要求数据必须有序,将有序的数据依次放入n个桶中,保证每个桶中的数据几乎一致,相差最多不超过1个排序函数row_number:数据排序之后,按顺序给数据进行编号,即使数据相同,也是给定不同的编号rank:数据排序之后,按顺序给数据进行编号,如果数据相同,则给定相同的序号,会产生空位dense_rank。
2024-03-30 09:45:27 1121
原创 what is apache?
Apache 通常指 Apache Software Foundation (ASF) 或 Apache HTTP Server,两者都是计算机软件领域的重要实体。
2024-03-26 18:53:36 659
原创 Flume详解(3)
3)gweb(Ganglia Web):Ganglia提供的一个可视化工具,本身是使用PHP开发的,提供了WEB页面,在WEB界面中以图标形式来显示集群的运行状态,以及所收集到的不同的指标数据。2)PutList会推送数据给Channel,如果Channel中有足够的位置,则数据推送成功(doCommit),如果Channel中没有位置,则推送失败,进行回滚(doRollback);主机拦截器,本质上不是拦截数据,而是在数据的headers中添加一个host字段,可以用于标记数据来源(被收集)的主机。
2024-03-25 17:13:32 1111
原创 Flume详解(2)
自定义Sink的时候,需要定义一个类继承,实现Sink接口,最好还要实现接口来获取配置。注意,自定义Sink的过程中,需要关注事务问题打成jar包放到lib目录下rz编辑格式文件在文件中添加# 配置自定义Sink# 类型必须是类的全路径名# 存储路径启动Flume发送HTTP请求Selector并不是一个单独的组件,而是附属于Source的子组件Selector支持三种模式:replicating:复制/复用模式。
2024-03-23 09:11:36 1232
原创 Flume详解
导入pom文件后,定义类继承,实现和接口打成jar包,上传到Flume安装目录的lib目录下rz回到格式文件目录下,编辑文件在文件中添加# 配置自定义EventDrivenSource# 类型必须是类的全路径名# 起始值# 结束值# 步长启动Flume定义一个类继承,实现和接口打成jar包,上传到lib目录下cd ../librz回到格式文件目录下,编辑文件在文件中添加# 配置自定义PollableSource# 类型必须是类的全路径名# 起始值# 结束值。
2024-03-22 09:11:45 1227
原创 做好自己,顺应时代
人类程序员可以利用人工智能技术提高编程效率和质量,同时也可以利用自己的经验和专业知识来指导和改进AI程序员的学习和表现。其中,最引人关注的问题之一是,这一新技术是否会抢走人类程序员的饭碗?因此,我们应该以开放的心态和积极的态度去应对这一变化,并相信人类的智慧和创造力将会引领我们走向更加美好的未来。此外,AI程序员还能够通过大量的数据和算法进行精确的错误检测和修复,提高了代码的质量和稳定性。近年来,随着深度学习等技术的发展,人工智能在编程领域的应用逐渐深入,甚至有了能够自主学习和创造代码的AI程序出现。
2024-03-21 10:54:31 612
原创 探索软件工程:构建可靠、高效的数字世界
软件工程是一门涵盖了设计、开发、测试、维护和管理软件的学科,它在如今数字化时代的发展中扮演着至关重要的角色。随着科技的不断进步和社会的不断变迁,软件工程的意义也愈发凸显。本文将探索软件工程的重要性、原则和实践,以及其对当今社会的影响。
2024-03-20 11:30:01 442
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人