自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 零基础学习Python(八)—— time模块、request模块、数据分析和自动化办公相关模块、jieba模块、文件操作和os相关模块的简单介绍

request库是python处理HTPP请求的库,使用request库的get()方法可以获取一个网络请求的响应,可以通过响应对象的text属性来获取响应中的字符串数据,通过响应对象的content属性来获取响应中的二进制数据(图片、音频、视频等)。walk():遍历目录树,参数不能传空,遍历结果是元组包含三个元素:当前遍历的目录,当前遍历的目录下包含的目录列表,当前遍历的目录下包含的文件列表。listdir():获取指定目录下的所有目录和文件,如果不传参,则默认为当前工作路径,返回结果为列表。

2024-09-05 23:01:19 872

原创 零基础学习Python(七)

1个英文字符是1个字符,1个中文字符也是1个字符,只不过1个英文字符是1个字节,utf-8编码下,1个中文字符是3个字节,gbk编码下,1个中文字符是2个字节。lstrip(chars)、rstrip(chars):去掉左侧的chars中包含的字符、去掉右侧的chars中包含的字符。re.findall函数搜索整个字符串匹配,匹配所有,返回一个列表,如果没匹配,就是一个空列表(不是None)re.search函数搜索整个字符串匹配,只匹配第一个,如果匹配成功,结果为Match对象,否则为None。

2024-08-29 23:17:57 945

原创 零基础学习Python(六)

模块在导入过程中,会从头到尾执行一遍模块的所有代码,因此如果不使用if __name__ == "__main__":将一些测试语句包裹起来,那么在导入模块的时候会执行一些没必要的代码。可以在__init__.py文件里定义全局变量,但是包里的模块不能直接访问这个全局变量(可以编写函数访问全局变量,但是运行该模块会报错),要通过包外的其他模块引用该模块,才可以进行访问。在__init__.py里还可以导入包里的某个模块,这样其他模块在导入这个包的时候就会自动导入模块:​​​​​​​ ​​​​​​​。

2024-08-21 23:33:37 923

原创 零基础学习Python(五)

c1 = C("c1"),相当于调用check对象的__call__方法,__call__方法里是在创建一个C类的对象,赋给了check对象的属性,而这个check对象是只有一个,即用类装饰器装饰类的时候生成的那一个,因此再次执行c2 = C("c2")相当于覆盖了之前同一个check对象的obj属性;上述代码C不再是C类,而是C = report(C),是一个Check类,执行c1 = C("c1")相当于生成一个check对象,对象的obj属性是一个C类的对象,里面存了name属性。

2024-08-04 16:47:38 921

原创 零基础学习Python(四)—— 各种魔法方法,property函数、装饰器、描述符

在Python中,如果定义了__iter__魔法方法,则认为是可迭代对象,如果一个可迭代对象定义了__next__魔法方法,则认为是一个迭代器。将str函数的结果传给eval函数,会报错,因为程序会去寻找FishC这个变量,因为没找到所以报错,而repr的结果传给eval函数,程序会认为'FishC'是一个字符串,从而正确识别。可以看到,self参数对应的是描述符类的对象,instance参数对应的是被描述符所拦截的属性所在的类的对象,owne参数对应的是描述符所拦截的属性所在的类。

2024-07-26 00:03:16 612

原创 零基础学习Python(三)—— 多重继承、重写、钻石继承、__slots__属性、魔法方法

_radd__方法的调用原则:如果加号两边的数据类型不同,并且左侧对象没有定义__add__方法,或者__add__方法实现为NotImplemented,那么Python就会去右侧对象找__radd__方法。类中的方法通过参数self与对象绑定,通过参数cls与类绑定,如果不用self或者cls来访问类中的变量或者方法,会报错找不到变量或者方法,或者达不到预期效果。可以发现,类A初始化了两次!注意,加号调用的是左边对象的__add__方法,s1 + s2相当于s1.__add__(s2)。

2024-07-17 23:50:14 945

原创 零基础学python(二)—— 字典、集合、函数、装饰器、生成器、函数文档、偏函数

注意只有可哈希的对象才能作为字典的key和集合的元素,比如字符串,数字,元祖,但是列表不可以作为字典的key和集合的元素,列表是可变数据类型,是不可哈希的。对于函数的嵌套,如果内层函数(一段代码处理逻辑)使用到了外层函数的变量(相当于外层函数的局部变量),然后外层函数的返回值恰好是内层函数本身,那么调用外层函数就可以获得内层函数的引用,并且里面相当于间接的永久保存了外层函数的局部变量,这就是闭包。值得注意的是,使用方法时,方法的参数只要是可迭代对象即可,但是使用运算符,运算符两边都要为集合。

2024-07-11 23:43:24 1096

原创 零基础学python(一)—— 匿名函数、变量作用域、random库、正则表达式、time库、socke、类和对象、静态方法、魔法方法

这样做似乎与直接将age变为公有变量是一样的,都是调用tom.age来获取或者修改属性值,但是这样的好处是在setter方法中可以做一些必要的校验,如果直接将age设为公有变量,修改值时是直接修改没法校验的。上述过程中使用了map和reduce函数,类似于Java的流式操作,所不同的是Java中map和reduce是流对象的方法,而Python中map和reduce是内置函数,第二个参数是可迭代的集合。继承:子类继承父类,子类可以继承父类的属性,也可以有自己的一些独有属性,还可以调用或者覆写父类的方法。

2024-07-05 22:42:57 1144

原创 SparkSQL简介

SparkSQL是Spark用于结构化数据处理的Spark模块。

2024-06-04 23:18:11 1017

原创 Maven入门及命令行介绍

而实际上 jar 包之间的依赖关系是普遍存在的,如果要由程序员手动梳理无疑会增加极高的学习成本,而这些工作又对实现业务功能毫无帮助。而使用 Maven 则几乎不需要管理这些关系,极个别的地方调整一下即可,极大的降低了我们的工作量。我们在开发过程中,最基本的做法就是将现实生活中的事物抽象为模型,然后封装模型相关的数据作为一个对象,这样就可以在程序中计算与现实事物相关的数据。通过在父工程中为整个项目维护依赖信息的组合既保证了整个项目使用规范、准确的 jar 包,又能够将以往的经验沉淀下来,节约时间和精力。

2024-05-30 10:56:39 831

原创 Spark累加器、广播变量、案例需求

很自然地想到组合rdd的算子join,但是join只能组合相同的key,如果一个商品只有点击没有下单,那么使用join是不会出现在最终结果的,同理leftOuterJoin和rightOuterJoin也是类似的,不能实现相应的功能。1)已经从原始日志文件中读出了商品的点击数量rdd、下单数量rdd、支付数量rdd,都是(商品id, cnt)的形式,需要将这三种rdd组合成(商品id, (点击数量, 下单数量, 支付数量))的rdd,并且依次按照点击数量、下单数量、 支付数量排序取前十。

2024-05-19 21:23:47 1165

原创 Kafka消费者

消费者组内的消费者负责消费不同的分区,一个分区只能由组内一个消费者消费。手动提交offset:每次消费完数据之后由消费者自己提交offset信息,分为同步提交(阻塞当前线程,提交offset成功后才消费下一波数据,并且会有失败重试)和异步提交(发送了提交请求之后不管成功,直接消费下一波数据)。自动提交offset场景下,如果提交offset后,消费者又继续消费了后面的数据,然后挂了,此时下一个offset还未自动提交,那么消费者恢复后,会从原来的offset的位置开始消费,于是出现了重复消费的问题。

2024-04-14 21:44:53 8400 3

原创 RDD算子(四)、血缘关系、持久化

override def numPartitions : Int = n //自定义,可以写死。

2024-04-05 21:35:41 996

原创 Kafka broker

1)如果Follower挂了,该Follower会立即被踢出isr,isr中其他Leader和Follower正常接受/同步数据,待该Follower恢复后,会读取上次的HW,将自己高于HW的数据丢弃,从HW开始与Leader同步,等到该Follower的LEO大于等于该Partition的HW,则重新加入isr队列。2)如果Leader挂了, Leader会立即被踢出isr,并且会选出一个新的Leader,其余的Follower会将高于HW的数据丢弃,然后与新的Leader进行同步。

2024-03-24 22:20:14 1096

原创 RDD算子介绍(三)

只不过aggregateByKey需要根据不同的key进行分组,最后得到的是RDD,而aggregate不需要根据key进行分组计算,直接得到计算结果。另外一个区别就是aggregate的初始值不进会参与分区内计算,还会参与分区间计算,而aggregateByKey的初始值只参与分区内计算,所以下面程序的允许结果为40。行动算子会触发作业的执行,底层调用的是runJob方法,会创建ActiveJob,并提交执行。表示4出现了依次,2出现了依次,1出现了1次,3出现了1次。如果有不同的key,则不会连接。

2024-03-20 22:54:48 907

原创 RDD算子介绍(二)

原来1和2,3和4,5和6分别在三个分区里,如果缩减分区之后1 2 3在一个分区,4 5 6在一个分区,意味着将原来的3和4所在的分区里的数据打乱重新组合了。既然存在shuffle操作,如果后续还有map等转换操作,原来一个分区的数据处理完之后还需要等待其他分区的数据处理完,因为shuffle后的分区的数据可能不止来源于原来的一个分区。reduceByKey会进行预聚合,这是分区内的聚合,然后shuffle操作打乱数据,进行分区间的聚合,此时分区内和分区间的聚合规则是一样的。

2024-03-10 21:56:17 1010

原创 Kafka入门及生产者详解

传统定义:分布式的、基于发布/订阅模式的消息队列,主要用于大数据实时处理领域。发布/订阅模式中,发布者不会直接将消息发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接受感兴趣的消息。官网最新定义:开源的分布式事件流平台(Event Streaming Platform),用于高性能数据管道、流分析、数据集成。

2024-03-09 00:14:48 1283

原创 RDD算子介绍(一)

转换,即一个RDD转换为另一个RDD,是功能的转换与补充,比如map,flatMap。sample算子主要有三个参数,第一个是抽取的数放不放回去,第二个参数是概率,如果抽取不放回,则表示每个数被抽取的概率,如果抽取放回,则表示某个数可能的抽取次数(可能的次数而已),第三个参数是随机数算法种子(一般可不填,如果填了,可能会导致抽取结果固定)。所以,RDD的计算对于分区内的数据是一个个执行的,即分区内数据的执行是有序的,但是分区间的数据执行是无序的。,原分区的数据被分到另一个分区了,即。

2024-03-02 17:02:38 1111

原创 RDD简介与基础编程

RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据处理模型。在代码中,RDD是一个抽象类,他代表着一个弹性的、不可变的、可分区的、里面的元素可并行计算的集合。注意,RDD只是封装了计算逻辑,并不保存数据。RDD是一个抽象类,需要子类去实现。不可变指的是计算逻辑不可变,如果想要改变,则要产生新的RDD。

2024-02-29 23:38:16 1305

原创 Zookeeper客户端命令、JAVA API、监听原理、写数据原理以及案例

要想验证对子节点增删的监听,首先在java主线程中添加一个睡眠的函数,使其持续运行不至于很快结束,然后在process回调中添加相应的打印代码(比如继续getChildren,打印子节点信息),这样手动去添加节点,会执行到process函数中的打印信息。分析:进程用客户端表示,每个客户端进程会去Zookeeper中创建一个临时带序号的子节点,如果子节点序号最小,则表示获取到锁,否则监听前一个序号更小的节点,持有锁执行完业务之后,会删除节点,表示释放锁,后面的节点/进场即可获取到锁。

2024-02-25 17:11:34 1354

原创 Zookeeper简介及选举机制

Zookeeper是一个开源的,分布式的,为分布式框架(如下图中的Hadoop和Hive)提供协调服务的Apache项目。工作机制:基于观察者设计模式的分布式服务管理框架,负责存储和管理数据,接受观察者注册,一旦这些数据状态发生变化,Zookeeper就会发送通知给这些已注册的观察者。简而言之,Zookeeper = 文件系统+通知机制。特点:1)由1个Leader和多个Follower组成的集群。

2024-02-23 21:39:44 836 1

原创 I/O体系结构和设备驱动程序(一)

让信息在CPU、RAM和I/O设备之间流动的数据通路称之为总线,即计算机内的主通信通道。所有计算机都有一条系统总线(一种典型的系统总线是PCI总线),连接内部大部分的硬件设备。计算机内不同的总线可以通过“桥”进行连接。任何I/O设备有且仅能连接一条总线,CPU和I/O设备之间的总线称为I/O总线。

2023-06-17 14:38:30 751

原创 Spark入门之——运行环境、核心组件、分布式计算简介

Spark入门之——运行环境、核心组件、分布式计算简介

2023-03-06 22:36:14 460 1

原创 Spark入门案例-WordCount

Spark入门案例-WordCount

2023-02-19 22:24:57 379

原创 MapReduce Join案例、ETL、压缩简介

MapReduce Join案例、ETL、压缩简介

2023-02-08 21:00:31 305

原创 MapReduce分区、排序、Combiner、OutputFormat

MapReduce分区、排序、Combiner、OutputFormat

2022-11-20 19:45:45 655

原创 MapReduce切片与文件输入格式

MapReduce切片与文件输入格式

2022-11-06 22:09:37 841

原创 MapReduce入门以及WordCount案例

MapReduce入门以及WordCount案例

2022-10-16 18:10:34 864

原创 HDFS读写流程+NameNode和DataNode工作机制

HDFS读写流程+NameNode和DataNode工作机制

2022-10-07 21:37:13 1501 2

原创 React实现todoList(非消息订阅机制)

React实现todoList(非消息订阅机制)

2022-06-15 21:53:41 169

原创 React生命周期案例与简介

React生命周期案例与简介

2022-06-06 22:31:26 172

原创 React受控组件、非受控组件、高阶函数与柯里化

紧接着上一篇介绍refs的案例React三大属性之props与refs简介,本文先进行一些优化,然后引入一些新的概念。优化的出发点是因为React官网说不要过多使用refs,因此能不用refs就不用refs。以第二个输入框为例,其事件onBlur的回调函数可以简写为:<input onBlur={event => console.log(event.target.value)} type="text" placeholder="失去焦点打印数据"/>这里的onBlur的值一定要

2022-05-29 23:14:49 176

原创 React三大属性之props与refs简介

之前介绍的state属性主要作用是标记组件的状态,且可以在初始化组件时就设置,而props属性主要是用来接收外部传入的数据。考虑如下诉求:实现人的信息的展示,人的信息由组件外的数据传入。此时需要使用props属性,React能自动收集组件标签中的各个属性数据,放入props属性中,然后在render方法中可以使用props属性中的数据:class MyDemo extends React.Component{ render() { const {name, age, sex}

2022-05-29 17:45:22 571

原创 React组件与state简介

进阶上一篇文章,先做一个jsx的小练习,实现一个列表项的展示:const VDOM = (<div> <h1>前端框架列表</h1> <ul> <li>React</li> <li>Vue</li> <li>Angular</li> </ul></div>)ReactDOM.rende

2022-05-28 21:50:40 266

原创 React入门

React作为一个优秀的前端框架,是一名立志于成为全栈工程师的程序员所必须要学的。React的入门十分简单,只需在html文件中引入三个js,就可以开始React编程。引入方式可以先通过cdn引入:<script src="https://cdn.staticfile.org/react/16.4.0/umd/react.development.js"></script><script src="https://cdn.staticfile.org/react-dom/

2022-05-25 22:07:36 102

原创 ES6新特性(三)

1. 数值扩展:a. Number.EPSILON表示最小的浮点数,即最小精度,如果两数之差小于该值,则认为相等。b. 二进制的数以0b开头:let b = 0b1010; 八进制的数以0o开头:let c = 0o777; 十六进制的数以0x开头:let d = 0xff;c. 检测数是否有限:Number.isFinite(num);d. 检测数是否为NaN:Number.isNaN(num);e. 转换...

2022-05-22 21:02:38 71

原创 ES6新特性(二)

1. Promise异步编程// 定义Promise对象,传入一个函数(一般为异步操作),函数的参数一般默认为resolve rejectlet promise = new Promise(function(resolve, reject){ setTimeout(function(){ // 业务代码 // 如果成功不报错,调用resolve函数,data为要继续传递的业务数据 resolve(data); // 同理,如果报

2022-05-21 23:34:08 113

原创 ES6新特性(一)

1. let变量特性:a. 变量不能重复声明b. 作用域是块级作用域(大括号里的内容)c. 不存在变量提升,即不允许在变量声明之前使用变量d. 不影响作用域链2. const常量特性: a. 声明时必须赋初始值 b. 常量值不能修改,除了数组和对象 c. 块级作用域,并不是全局的 d. 一般常量名一般为全大写3. 解构赋值:即通过特殊的语法解构解析出...

2022-05-16 22:00:42 128

原创 hdfs常用shell命令

hadoop fs与hdfs dfs 等同,以下以hadoop fs为例进行介绍。创建文件夹:hadoop fs -mkdir 路径名上传文件(本地文件不再存在):hadoop fs -moveFromLocal 本地文件路径 hdfs文件夹路径上传文件(本地文件存在):hadoop fs -copyFromLocal/-put 本地文件路径 hdfs文件夹路径追加文件:hadoop fs -appendToFile 本地文件路径 hdfs文件路径下载文件(可以修

2022-05-14 22:09:11 255

原创 使用Mac版Docker搭建Hadoop集群(运行yarn与总结坑点)

上一篇文章介绍了启动HDFS,并且在浏览器访问,接下来启动yarn并尝试提交任务使其执行。在hadoop2节点上启动yarn,因为yarn-site.xml中写的yarn.resourcemanager.hostname属性值是hadoop2。sbin/start-yarn.sh然后jps查看hadoop2上的进程:发现ResourceManager启动成功。然后运行单词统计任务:hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-e

2022-05-08 20:35:32 1309

空空如也

空空如也

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

TA关注的人

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