自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Python爬取安居客(base64加密)

测试base64加密:http://tool.chinaz.com/Tools/Base64.aspx基本原理:https://www.cnblogs.com/hongru/archive/2012/01/14/2321397.html一、分析url访问网址:https://bj.zu.anjuke.com/发现字体部分是加密得到的,可以猜想到大概是css加密,尝试查看它的字体。去style中找下这个字体的来源查看自定义字体的格式,如下所示:@font-face { font-f

2020-10-14 08:15:54 846 1

原创 Python爬取有道翻译(js-加密)

一、分析URL先尝试爬取一下:import requests# url = "http://www.httpbin.org/post"url = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"headers = { 'X-Requested-With': 'XMLHttpRequest', 'User-Agent': 'Mozilla/5.0 (Macintosh; In

2020-10-13 14:37:59 552

原创 python破解验证码

一、需求分析在爬虫过程中,有的时候需要登录,而登录的时候一般需要验证码。如果手动输入验证码肯定来不及的或达不到预期要求,这里就需要自动登录,这就意味着需要破解验证码。验证码的类型有很多,常见的两类:(1)文字验证码(2)滑动图形验证验证码有很多种类,下面以这两种为讲解思路引导。文字验证码(1)使用selenium访问(2)将验证码图片保存(3)识别滑动验证(1)计算滑动距离(2)模拟人滑动(总体思路是先快再慢)实现文字验证码,可以使用图像识别技术,有很多第三方做好的图

2020-10-10 17:46:17 707

原创 Python爬取斗鱼直播网站信息

一、需求爬取斗鱼直播网站信息,如直播名字、主播名字、热度、图片和房间网址,将这些数据保存到csv文件中,并单独创建文件夹保存图片。斗鱼直播网址:https://www.douyu.com/g_LOL二、分析url先单击【直播】,然后单击分页,发现分页的时候url没发生变化,基本可以确定是通过异步加载的。现在找到了异步url。此时,可以直接向url发送请求后去数据,还可以使用selenium获取加载之后的网页总数据,提取。三、数据提取有两种办法可以选择:(1)如果使用ajax异步u

2020-10-10 09:08:12 615

原创 Python爬取豆瓣读书

一、需求爬取豆瓣读书Top250(csv存取数据)豆瓣读书网址:https://book.douban.com/top250?start=0二、代码实现import requestsimport csvfrom lxml import etreeheaders = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36' '(KHTML, like

2020-10-09 16:40:11 627

原创 Python爬取腾讯招聘信息

一、分析需求腾讯招聘网址:https://careers.tencent.com/search.html分析获取url:提取数据的方法:使用json转字典二、代码实现import requestsimport csvurl = "https://careers.tencent.com/tencentcareer/api/post/Query"headers = { "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKi

2020-10-09 11:44:41 716 2

原创 Python爬取豆瓣电影

一、分析url单击分类信息,跳转到分类电影列表。这个页面是有多页数据加载的,当用户向下滚动右侧的滚动,加载数据,这个经过分析是ajax加载的数据,需要找到ajax请求的网址。先找到分类,提取分类的名字和类型编号,然后再爬分类下的电影数据。二、提取数据的方法ajax返回的数据是json,response.json()得到的是字典,用字典操作就可以了,当然肯定可以用正则。其实专门操作json的有一个模块叫jsonpath。三、代码实现import requestsimport rei

2020-10-09 09:34:34 601 1

原创 Python爬取古诗词

一、需求爬取网址:https://www.gushiwen.org/需求:(1)获取侧边栏【类型】信息;(2)获取每个类型中古诗文详情页信息;(3)提取详情页数据:古诗文名、作者、朝代、类型、内容、译文及注释;(4)将数据保存到 csv 文件;二、代码实现import requestsimport csvfrom lxml import etreestart_url = "https://so.gushiwen.cn/shiwen/"base_url = "https://so

2020-10-08 11:39:06 792

原创 Python爬取扇贝Python必背词汇

一、需求分析爬取网址:http://www.shanbay.com/wordlist/110521/232414/需求:获取所有的 python 词汇数据,形成字典,存储数据。二、代码实现#导入包from urllib import requestfrom lxml import etree#词汇表words = []def shanbei(page): url = "http://www.shanbay.com/wordlist/110521/232414/"

2020-10-07 16:48:57 209 1

原创 Python爬取网易云音乐所有歌手的名称和链接

一、需求Python爬取网易云音乐所有歌手的名称和链接二、代码实现import requestsfrom lxml import etreefrom urllib import requestimport timeclass WangYiYun: def __init__(self, base_url): # 初始化tree self.html = self.request_url(base_url) self.parse_html(

2020-10-07 16:36:59 706 3

原创 Python编写简单的剪刀石头布小程序

一、程序要求(1)提示用户选择石头剪刀布(2)计算机随机选择石头剪刀布(3)判断用户输赢(4)打印结果二、代码实现import random# 电脑人随机出拳computer = random.randint(1, 3)user = int(input('请出拳:1.拳头,2.剪刀,3.布'))if computer == 1: computer = '拳头'elif computer == 2: computer = '剪刀'else: compute

2020-10-05 18:03:11 196

原创 Python编写简单的计算器,用户输入两个数字和一个四则运算符,计算结果

一、程序要求(1)提示用户从键盘输入第一个数字(2)提示用户从键盘输入第二个数字(3)提示用户选择运算符(4)打印结果二、代码实现a = int(input("请输入第一个数:"))b = int(input("请输入第二个数:"))symbol = input("请输入四则运算符号:(+-*/)")if symbol == "+": print("%s%s%s=%s"%(a,symbol,b,a+b))elif symbol == "-": print("%s%s%s=

2020-10-05 17:41:34 1136

原创 RDD 的五大特性(详细解析)

RDD 的五大特性一、简介版二、详细版一、简介版(1)A list of partitions一组分区:RDD由很多partition构成,有多少partition就对应有多少task(2)A function for computing each split一个函数:对RDD做计算,相当于对RDD的每个split或partition做计算(3)A list of dependencies on other RDDsRDD之间有依赖关系,可溯源(4)Optionally, a P

2020-09-28 17:20:16 1625

原创 Cache缓存和checkpoint检查点的区别

(1)Cache缓存只是将数据保存起来,不切断血缘依赖。Checkpoint检查点切断血缘依赖。(2)Cache缓存的数据通常存储在磁盘、内存等地方,可靠性低。Checkpoint的数据通常存储在HDFS等容错、高可用的文件系统,可靠性高。(3)建议对checkpoint()的RDD使用Cache缓存,这样checkpoint的job只需从Cache缓存中读取数据即可,否则需要再从头计算一次RDD。(4)如果使用完了缓存,可以通过unpersist()方法释放缓存。...

2020-09-25 19:05:10 833

原创 MySQL与Redis的区别与联系(详细解析!!!)

MySQL与Redis的区别与联系一、MySQL和Redis的数据库类型二、MySQL和Redis的运行机制三、什么是缓存数据库?四、Redis和MySQL的区别总结4.1 数据库类型4.2 数据库作用4.3 业务需求4.4 应用场景4.5 数据存放位置4.6 存放数据类型(常用)五、数据可不可以直接全部用Redis存储?一、MySQL和Redis的数据库类型1、Mysql是关系型数据库,主要用于存放持久数据,将数据存放在硬盘中,读取速度相对较慢。2、Redis是NOSQL数据库,即非关系型数据库,也

2020-09-24 17:34:23 3474

原创 HDFS、Hbase、MySQL、Redis和hive之间的区别分析

(1)HDFS:为分布式存储提供文件系统(1)Redis:分布式缓存,基于内存并且强调缓存,支持数据持久化,支持事务操作。(2)MySQL:传统关系型数据库,注重关系,注重事务性。(3) hive:数据仓库工具,底层是mapreduce。不是数据库,不能用来做用户的交互存储1、HDFS为分布式存储提供文件系统针对存储大尺寸的文件进行优化,不需要对HDFS上的文件进行随机读写直接使用文件数据模型不灵活使用文件系统和处理框架优化一次写入,多次读取的方式2、HBase提供表状的面向列的数据

2020-09-22 22:41:54 204

原创 Spark和Hadoop的异同点比较分析(很详细哦!!!)

Spark和Hadoop的异同点分析一、两者实现原理的比较二、 两者多方面的对比三、Spark和MR两者之间的详细对比分析(重点)3.1 速度3.2 容错性3.3 适用性3.4 框架和生态3.5 运行环境四、三大分布式计算框架系统(1)Spark:是分布式计算平台,是一个用scala语言编写的计算框架,基于内存的快速、通用、可扩展的大数据分析引擎 。(2)Hadoop:是分布式管理、存储、计算的生态系统;其中包括三大部分:HDFS(存储)、MapReduce(计算)、Yarn(资源调度)一、两者实现

2020-09-22 20:57:20 4013

原创 intellij idea在编写代码时无法使用回车键

1、问题:在使用intellij idea编写代码时无法使用回车键,换到下一行继续编写代码,按下回车键之后下一行代码却被删除了。2、解决方法:可能是在编写代码时不小心按了 Insert 键,只需要再次按下 Insert 键即可。那么有些笔记本键盘没有insert键怎么办呢?因为我用的惠普电脑,以惠普为例:(1)首先,按住shift+fn 是的fn键上的灯亮起。(2)然后,按住fn+E回车键就有原来的换行功能啦!惠普笔记本的隐藏按键:...

2020-09-21 09:27:13 445

原创 R语言入门之R与RStudio的详细安装过程(图文很详细哦!!!)

R与RStudio的安装教程一、什么是R二、什么是RStudio三、R和RStudio安装前说明四、安装R五、安装RStudio六、测试软件安装是否成功七、RStudio界面介绍一、什么是RR是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。简单来说,R是一门统计计算语言,是一套开源的数据分析解决方案。二、什么是RStudioRStudio是一款R语言的IDE,R自带的环境操作起来可能不是方便,而Rstudio很好地

2020-09-20 19:49:28 1179

原创 Flink常见面试题总结(全是干货哦!!!)

Flink常见面试题总结1、面试题一:应用架构2、面试题二:压测和监控3、面试题三:为什么用 Flink4、面试题四:checkpoint 的存储5、面试题五:exactly-once 的保证6、面试题六:状态机制7、面试题七:海量 key 去重8、面试题八:checkpoint 与 spark 比较9、面试题九:watermark 机制10、面试题十:exactly-once 如何实现11、面试题十一:CEP12、面试题十二:三种时间语义13、面试题十三:数据高峰的处理更多关于Flink的详细内容请查

2020-09-20 10:58:01 536 1

原创 Flink之Flink CEP 复杂事件处理简介

Flink CEP 复杂事件处理简介一、什么是复杂事件处理 CEP二、Flink CEP2.1 Event Streams2.2 Pattern API2.3 Pattern 检测2.4 select2.5 flatSelect2.6 超时事件的处理一、什么是复杂事件处理 CEP一个或多个由简单事件构成的事件流通过一定的规则匹配,然后输出用户想得到的数据,满足规则的复杂事件。特征:目标:从有序的简单事件流中发现一些高阶特征输入:一个或多个由简单事件构成的事件流处理:识别简单事件之间的内在联系,

2020-09-20 10:32:25 320

原创 Flink之Table API 与 SQL

Table API 与 SQL一、需要引入的 pom 依赖二、简单了解 TableAPI2.1 动态表2.2 字段三、Table API 的窗口聚合操作3.1 通过一个例子了解 TableAPI3.2 关于 group by3.3 关于时间窗口四、SQL 如何编写Table API 是流处理和批处理通用的关系型 API,Table API 可以基于流输入或者批输入来运行而不需要进行任何修改。Table API 是 SQL 语言的超集并专门为 Apache Flink 设计的,Table API 是 Sca

2020-09-20 10:17:11 384

原创 Flink之状态编程和容错机制

状态编程和容错机制一、有状态的算子和应用程序1.1 算子状态(operator state)1.2 键控状态(keyed state)二、状态一致性2.1 一致性级别2.2 端到端(end-to-end)状态一致性三、检查点(checkpoint)3.1 Flink 的检查点算法3.2 Flink+Kafka 如何实现端到端的 exactly-once 语义四、选择一个状态后端(state backend)流式计算分为无状态和有状态两种情况。无状态的计算观察每个独立事件,并根据最后一个事件输出结果。例如,

2020-09-20 09:47:14 305 1

原创 Flink之ProcessFunction API(底层 API)

ProcessFunction API一、KeyedProcessFunction二、TimerService 和 定时器(Timers)三、侧输出流(SideOutput)四、CoProcessFunction我们之前学习的转换算子是无法访问事件的时间戳信息和水位线信息的。而这在一些应用场景下,极为重要。例如 MapFunction 这样的 map 转换算子就无法访问时间戳或者当前事件的事件时间。基于此,DataStream API 提供了一系列的 Low-Level 转换算子。可以访问时间戳、wat

2020-09-20 08:49:28 308

原创 在windows环境下安装netcat的详细过程

下载链接: https://eternallybored.org/misc/netcat/解压后,把nc.exe复制到C:\Windows\System32目录下:运行cmd,查看是否安装成功,输入命令:nc -h

2020-09-19 11:21:55 110

原创 IDEA安装完插件Scala后 通过add frameworks support找到不到scala插件

如下图所示:创建完项目,准备添加scala插件时却发现找不到解决方法:现在首先project structure 中删除已经存在插件:在里面的Modules中找到已经存在的:选中点击移除:然后重新add frameworks support添加:查看是否添加成功:在 External Libraries 目录下 出现Scala的sdk...

2020-09-19 10:36:48 129

原创 Spark性能调优与故障处理之(6)Spark Troubleshooting故障排除

Spark Troubleshooting一、控制 reduce 端缓冲大小以避免 OOM二、JVM GC 导致的shuffle文件拉取失败三、解决各种序列化导致的报错四、解决算子函数返回 NULL 导致的问题五、YARN-CLIENT 模式导致的网卡流量激增问题六、YARN-CLUSTER 模式的JVM 栈内存溢出无法执行问题七、解决SparkSQL导致的 JVM 栈内存溢出八、持久化后的 RDD 数据丢失一、控制 reduce 端缓冲大小以避免 OOM在 Shuffle 过程,reduce 端 ta

2020-09-17 20:50:40 84

原创 Spark性能调优与故障处理之(5)Spark 数据倾斜优化

Spark 数据倾斜优化一、聚合原数据二、过滤导致倾斜的 key三、提高shuffle操作中的reduce并行度3.1 reduce 端并行度的设置3.2 reduce 端并行度设置存在的缺陷四、使用随机 key 实现双重聚合五、将reduce join转换为 map join六、sample 采样对倾斜 key单独进行join七、使用随机数以及扩容进行 joinSpark 中的数据倾斜问题主要指 shuffle 过程中出现的数据倾斜问题,是由于不同的 key 对应的数据量不同导致的不同 task 所处理

2020-09-17 20:22:22 102

原创 Spark性能优化与故障处理之(4)Spark JVM 调优

JVM 调优一、降低 cache 操作的内存占比1.1 静态内存管理机制1.2 统一内存管理机制二、调节 Executor 堆外内存三、调节连接等待时长对于 JVM 调优,首先应该明确,full gc/minor gc,都会导致 JVM 的工作线程停止工作,即 stop the world。一、降低 cache 操作的内存占比1.1 静态内存管理机制根据 Spark 静态内存管理机制,堆内存被划分为了两块,Storage 和 Execution。Storage 主要用于缓存 RDD 数据和 broa

2020-09-17 19:38:54 69

原创 Spark性能调优与故障处理之(3)Spark Shuffle 调优

Shuffle 调优一、调节 map 端缓冲区大小二、调节 reduce 端拉取数据缓冲区大小三、调节 reduce 端拉取数据重试次数四、调节 reduce 端拉取数据等待间隔五、调节 SortShuffle 排序操作阈值一、调节 map 端缓冲区大小在 Spark 任务运行过程中,如果 shuffle 的 map 端处理的数据量比较大,但是map 端缓冲的大小是固定的,可能会出现 map 端缓冲数据频繁 spill 溢写到磁盘文件中的情况,使得性能非常低下,通过调节 map 端缓冲的大小,可以避免频

2020-09-17 19:24:55 83

原创 Spark性能调优与故障处理之(2)Spark 算子调优

Spark 算子调优一、mapPartitions二、foreachPartition 优化数据库操作三、filter 与 coalesce 的配合使用四、repartition 解决 SparkSQL 低并行度问题五、reduceByKey 本地聚合一、mapPartitions普通的 map 算子对 RDD 中的每一个元素进行操作,而 mapPartitions 算子对 RDD中每一个分区进行操作。如果是普通的 map 算子,假设一个 partition 有 1 万条数据,那么 map 算子中的 f

2020-09-17 19:12:42 85

原创 Spark 性能调优与故障处理之(1)Spark常规性能调优

常规性能调优一、最优资源配置二、RDD 优化2.1 RDD 复用2.2 RDD 持久化2.3 RDD 尽可能早的 filter 操作三、广播大变量四、Kryo 序列化五、调节本地化等待时长一、最优资源配置Spark 性能调优的第一步,就是为任务分配更多的资源,在一定范围内,增加资源的分配与性能的提升是成正比的,实现了最优的资源配置后,在此基础上再考虑进行后面论述的性能调优策略。资源的分配在使用脚本提交 Spark 任务时进行指定,标准的 Spark 任务提交脚本如下所示:/usr/opt/modul

2020-09-17 18:16:49 93

原创 mydql报错:1171-All parts of a PRIMARY KEY must be NOT NULL

mysql 错误代码:1171错误原因:在创建主键id的时候没有取消上图的允许空值,导致报错1171解决方法:取消上允许空值

2020-09-17 09:17:26 1307

原创 Spark内核解析之(8)Spark 核心组件深度剖析

Spark 核心组件深度剖析一、BlockManager 数据存储与管理机制二、Spark 共享变量底层实现2.1 广播变量2.2 累加器一、BlockManager 数据存储与管理机制BlockManager 是整个 Spark 底层负责数据存储与管理的一个组件,Driver 和Executor 的所有数据都由对应的 BlockManager 进行管理。Driver 上有 BlockManagerMaster,负责对各个节点上的 BlockManager 内部管理的数据的元数据进行维护,比如 blo

2020-09-16 19:25:14 86

原创 Spark内核解析之(7)Spark 内存管理原理剖析

Spark 内存管理原理剖析一、堆内和堆外内存规划1.1 堆内内存1.2 堆外内存二、内存空间分配2.1 静态内存管理2.2 统一内存管理三、存储内存管理3.1 RDD 的持久化机制3.2 RDD 的缓存过程3.3 淘汰与落盘四、执行内存管理在执行 Spark 的应用程序时,Spark 集群会启动 Driver 和 Executor 两种JVM 进程,前者为主控进程,负责创建 Spark 上下文,提交 Spark 作业(Job),并将作业转化为计算任务(Task),在各个 Executor 进程间协调任务

2020-09-16 18:57:39 95

原创 Spark内核解析之(6)Spark Shuffle运行原理剖析

Spark Shuffle运行原理剖析一、Shuffle 的核心要点1.1 ShuffleMapStage 与 FinalStage1.2 Shuffle 中的任务个数1、map 端 task 个数的确定2、reduce 端 task 个数的确定1.3 reduce 端数据的读取二、HashShuffle 解析2.1 未经优化的 HashShuffleManager2.2 优化后的 HashShuffleManager三、SortShuffle 解析3.1 普通运行机制3.2 bypass 运行机制一、S

2020-09-16 17:59:47 100

原创 Spark内核解析之(5)Spark 任务调度原理机制深度剖析

Spark 任务调度原理机制剖析一、Spark 任务提交流程二、Spark 任务调度概述三、Spark Stage 级调度四、Spark Task 级调度4.1 调度策略1、FIFO 调度策略2、FAIR 调度策略4.2 本地化调度4.3 失败重试与黑名单机制在工厂环境下,Spark 集群的部署方式一般为YARN-Cluster 模式,之后的内核分析内容中我们默认集群的部署方式为 YARN-Cluster 模式。一、Spark 任务提交流程在上一章中我们讲解了 Spark YARN-Cluster 模

2020-09-15 20:37:30 90

原创 Spark内核解析之(4)SparkContext原理分析

在 Spark 中由 SparkContext 负责与集群进行通讯、资源的申请以及任务的分配和监控等。当 Worker 节点中的 Executor 运行完毕 Task 后,Driver 同时负责将SparkContext 关闭。通常也可以使用 SparkContext 来代表驱动程序(Driver)。下图为SparkContext 与集群交互流程图:SparkContext 是用户通往 Spark 集群的唯一入口,可以用来在 Spark 集群中创建 RDD、累加器和广播变量。SparkContext

2020-09-15 19:47:08 98

原创 Spark内核解析之(3)Spark 通讯架构原理剖析

一、Spark 通信架构概述Spark2.x 版本使用 Netty 通讯框架作为内部通讯组件。spark 基于 Netty 新的 rpc框架借鉴了 Akka 的中的设计,它是基于 Actor 模型,如下图所示:Spark 通讯框架中各个组件(Client/Master/Worker)可以认为是一个个独立的实体,各个实体之间通过消息来进行通信。具体各个组件之间的关系图如下:Endpoint(Client/Master/Worker)有 1 个 InBox 和 N 个 OutBox(N>=1,N

2020-09-15 19:36:12 99

原创 Spark内核解析之(2)Spark 三大部署模式原理剖析

因为之前已经写过相关的文章,这里就不重复了,下面是三种模式的文章链接。一、Local 模式博文链接: https://blog.csdn.net/weixin_43520450/article/details/108579683二、Standalone 模式博文链接: https://blog.csdn.net/weixin_43520450/article/details/108580266三、Yarn 模式博文链接: https://blog.csdn.net/weixin_43520450

2020-09-15 19:06:16 86

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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