自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Rnan_wang的博客

知是行之始,行是知之成(博客园:https://www.cnblogs.com/rnanprince/category/1422649.html)

  • 博客(269)
  • 收藏
  • 关注

原创 Spark常用操作(收藏)

1、transformation 操作map(func): 对调用 map 的 RDD 数据集中的每个 element 都使用 func,然后返回一个新的 RDD,这个返回的数据集是分布式的数据集。 filter(func): 对调用 filter 的 RDD 数据集中的每个元素都使用 func,然后返回一个包含使 func 为 true 的元素构成的 RDD。 flatMap(func): 和 map 差不多,但是 flatMap 生成的是多个结果。 mapPartitions(func): 和

2021-01-03 21:30:37 22

原创 Git版本控制

安装和配置Git 安装首先,我们必须安装 Git 才能使用它!这里分 Linux 和 Windows 来演示:在 Linux 上安装 Gitsudo yum install git在 Windows 上安装 Git直接在https://git-scm.com/downloads里面,下载最新版的 Git,默认安装就可以了。安装完成后,在开始菜单里找到Git->Git Bash,点击后出现一个类似命令行窗口的东西,就说明 Git 安装成功。Git 配置可以保存 G.

2020-07-16 23:57:01 99

转载 精心整理|Python爱好者社区历史文章合集(作者篇)

信息量非常全的总结:https://ask.hellobi.com/blog/python_shequ/14009

2020-05-16 13:41:43 174

原创 python高级用法及注意事项

一、稀有用法1、bfs:set代替list效率高2、set转成tuple可以序列化3、set.intersection(set1, set2 ... etc)https://www.runoob.com/python3/ref-set-intersection.html4、python的排序模块bisecthttps://www.cnblogs.com/skydesign/...

2020-01-22 15:01:03 2117 2

原创 LeetCode-1406-DP博弈问题应用

1406. 石子游戏 IIIAlice 和 Bob 用几堆石子在做游戏。几堆石子排成一行,每堆石子都对应一个得分,由数组 stoneValue 给出。Alice 和 Bob 轮流取石子,Alice 总是先开始。在每个玩家的回合中,该玩家可以拿走剩下石子中的的前 1、2 或 3 堆石子 。比赛一直持续到所有石头都被拿走。每个玩家的最终得分为他所拿到的每堆石子的对应得分之和。每个玩家的初始分数都是 0 。比赛的目标是决出最高分,得分最高的选手将会赢得比赛,比赛也可能会出现平局。假设 Alic.

2021-02-15 14:12:49 32

原创 LeetCode-滑动窗口的单调队列应用

1696. 跳跃游戏 VI难度中等31给你一个下标从0开始的整数数组nums和一个整数k。一开始你在下标0处。每一步,你最多可以往前跳k步,但你不能跳出数组的边界。也就是说,你可以从下标i跳到[i + 1, min(n - 1, i + k)]包含两个端点的任意位置。你的目标是到达数组最后一个位置(下标为n - 1),你的得分为经过的所有数字之和。请你返回你能得到的最大得分。示例 1:输入:nums = [1,-1,-2,4,-7,...

2021-02-15 11:55:41 23

原创 LeetCode-1713-最长递增子序列应用

1713. 得到子序列的最少操作次数给你一个数组target,包含若干 互不相同的整数,以及另一个整数数组arr,arr可能 包含重复元素。每一次操作中,你可以在 arr的任意位置插入任一整数。比方说,如果arr = [1,4,1,2],那么你可以在中间添加 3得到[1,4,3,1,2]。你可以在数组最开始或最后面添加整数。请你返回 最少操作次数,使得target成为arr的一个子序列。一个数组的 子序列指的是删除原数组的某些元素(可能一个元素都不删除...

2021-02-15 11:28:13 39

原创 Spark比Mapreduce快的原因

1)基于内存spark是基于内存进行数据处理的,MapReduce是基于磁盘进行数据处理的。MapReduce的设计:中间结果保存在文件中,提高了可靠性,减少了内存占用。但是牺牲了性能。Spark的设计:数据在内存中进行交换,要快一些,但是内存这个东西,可靠性不如磁盘。所以性能方面比MapReduce要好。DAG计算模型在迭代计算上还是比MapReduce的效率更高。2)DAG有向无环图spark中具有DAG有向无环图,DAG有向无环图在此过程中减少了shuffle以及落地磁盘的次数。Spa

2021-01-17 22:24:25 41

原创 Spark技术栈中的组件

Spark技术栈概述相对于第一代的大数据生态系统Hadoop中的MapReduce,Spark 无论是在性能还是在方案的统一性方面,都有着极大的优势。Spark框架包含了多个紧密集成的组件。主要有Spark Core、Spark Streaming、Spark SQL等。Spark core是其它组件的基础,spark的内核,主要包含:有向循环图、RDD、Lingage、Cache、broadcast等,封装了底层通讯框架,实现了Spark的作业调度、内存管理、容错、与存储系统交互等基本功能,并针

2021-01-17 22:21:34 13

原创 Spark如何防止内存溢出

Spark使用过程中会有多种内存溢出的情况,即包括driver端的内存溢出,map对象过多内存溢出,数据不平衡内存溢出,shuffle后内存溢出以及standalone资源分配不均匀导致的内存溢出。driver端的内存溢出可以增大driver的内存参数:Spark.driver.memory (default 1g)这个参数用来设置Driver的内存。在Spark程序中,SparkContext,DAGScheduler都是运行在Driver端的。对应rdd的Stage切分也是在Driver端运行,

2021-01-17 22:19:14 45

原创 Spark任务提交后的执行流程

客户端启动后直接运行用户程序,启动Driver相关的工作:DAGScheduler和BlockManagerMaster等。 客户端的Driver向Master注册。 Master还会让Worker启动Exeuctor。Worker创建一个ExecutorRunner线程,ExecutorRunner会启动 ExecutorBackend进程。 ExecutorBackend启动后会向Driver的SchedulerBackend注册。Driver的DAGScheduler解析作业并生成相应的Stag

2021-01-17 22:16:03 16

原创 Spark处理数据比Hive快的原因

Spark SQL比Hadoop Hive快,是有一定条件的,而且不是Spark SQL的引擎比Hive的引擎快,相反,Hive的HQL引擎还比Spark SQL的引擎更快。其实,关键还是在于Spark 本身快。那么Spark为什么快呢? 消除了冗余的HDFS读写 Hadoop每次shuffle操作后,必须写到磁盘,而Spark在shuffle后不一定落盘,可以cache到内存中,以便迭代时使用。如果操作复杂,很多的shufle操作,那么Hadoop的读写IO时间会大大增加。、 消除了冗

2021-01-17 22:12:29 129

原创 Redis、传统数据库、HBase以及Hive的区别

Redis分布式缓存,基于内存,强调缓存,支持数据持久化,支持事务操作,NoSQL 类型的Key/vale数据库,同时支持List、Set等更丰富的类型。hbaseHBase是建立在HDFS之上,提供高可靠性的列存储,实时读写的数据库系统。它介于Nosql和关系型数据库之间,仅通过主键和主键的range来检索数据,仅支持单行事务。主要用来存储非结构化和半结构化的松散数据。关系数据库有mysql、Oracle、SqlServer等,支持事务性操作,属于写模式,即写入数据时进行检查。它是针对

2021-01-17 22:08:38 58

原创 异常检测方法-MAD

绝对中位差(MAD,median absolute deviation)方法是近年来受到青睐的异常值检测方法。MAD 定义为,一元序列Xi同其中位数偏差的绝对值的中位数(deviation,偏差本身有正有负):假定数据服从正态分布,我们让异常点(outliers)落在两侧的 50% 的面积里,让正常值落在中间的 50% 的区域里:正态分布下,±0.67449包含50%面积,而1/0.67449≈1.4826,因此:正态分布相关请参考:python标准正态分布表(scipy.s..

2021-01-10 01:07:17 233

原创 python标准正态分布表(scipy.stats)

1、标准正态分布表 Z-score 是非标准正态分布标准化后的 x即。 表头的横向表示小数点后第二位,表头的纵向则为整数部分以及小数点后第一位;两者联合作为完整的 x坐标轴的横轴。 表中的值为图中红色区域的面积,也即 cdf,连续分布的累积概率函数,记为 cdf 的逆,记为,如,表示 x 取何值时,阴影部分的面积为 0.75,查表可知,x 介于 0.67 和 0.68 之间; >> from scipy.stats import norm.

2021-01-10 00:36:44 632

原创 UTC-本地时区转换(python)

1、UTC时间转本地时间import datetimedef utc2local(utc_st): """UTC时间转本地时间(+8:00)""" now_stamp = time.time() local_time = datetime.datetime.fromtimestamp(now_stamp) utc_time = datetime.datetime.utcfromtimestamp(now_stamp) offset = local_time

2021-01-03 21:08:05 89

原创 MapReduce:Combiner,partition的作用

combiner其实属于优化方案,由于带宽限制,应该尽量map和reduce之间的数据传输数量。它在Map 端把同一个key的键值对合并在一起并计算,计算规则与reduce一致,所以combiner也可以看作特殊的Reducer。Partition作用partition意思为分开,划分。它分割map每个节点的结果,按照key分别映射给不同的reduce,也是可以自定义的。其实可以理解归类。也可以理解为根据key或value及reduce的数量来决定当前的这对输出数据最终应该交由哪个reduce ta

2020-12-12 21:39:33 60

原创 Hadoop实现join的几种方法

1、reduce side joinreduce side join是一种最简单的join方式,其主要思想如下:在map阶段,map函数同时读取两个文件File1和File2,为了区分两种来源的key/value数据对,对每条数据打一个标签> (tag),比如:tag=0表示来自文件File1,tag=2表示来自文件File2。即:map阶段的主要任务是对不同文件中的数据打标签。> 在reduce阶段,reduce函数获取key相同的来自File1和File2文件的value list,.

2020-12-12 21:35:08 135

原创 Hadoop怎样实现二级排序

二级排序即对key和value双排序。默认情况下,Map输出的结果会对Key进行默认的排序,但是有时候需要对Key排序的同时还需要对Value进行排序,这时候就要用到二次排序了。有两种方法进行二次排序,分别为:buffer and in memory sort和 value-to-key conversion。1、buffer and in memory sort在reduce()函数中,将某个key对应的所有value保存到内存中,然后进行排序。 这种方法最大的缺点是:可能会造成out of

2020-12-10 00:42:52 112

原创 Hadoop中的Sequence File

什么是SequenceFilesequenceFile文件是Hadoop用来存储二进制形式的[Key,Value]对而设计的一种平面文件(Flat File)。 可以把SequenceFile当做是一个容器,把所有的文件打包到SequenceFile类中可以高效的对小文件进行存储和处理。 SequenceFile文件并不按照其存储的Key进行排序存储,SequenceFile的内部类Writer提供了append功能。 SequenceFile中的Key和Value可以是任意类型Writable或

2020-12-10 00:21:10 16

原创 Hadoop,HDFS,Map Reduce,Spark,Hive,Yarn之间的关系

HadoopHadoop 生态圈(或者泛生态圈)是一个能够对大量数据进行分布式处理的软件框架,是大数据平台的开发工具,但不是一个单一的工具,也不是一种单一的技术,而是一系列技术和工具的合集。用户在不需要了解分布式底层细节的情况下,能够开发分布式程序。Hadoop大数据平台,采用分布式架构,包含多个与大数据处理相关的组件:HDFS、MapReduce、Yarn、Hbase、Hive、Spark、Kafak、Storm、HDF、Ambari等,并根据用户的实际需求完成功能定制。Hadoop框架中

2020-12-09 23:39:09 204

原创 hadoop配置core-site.xml,hdfs-site.xml,mapred-site.xml

配置hadoop,主要是配置core-site.xml,hdfs-site.xml,mapred-site.xml三个配置文件,有两个方法可以正确配置:1.选择相应版本的hadoop,下载解压后,搜索*.xml,找到core-default.xml,hdfs-default.xml,mapred-default.xml,这些就是默认配置,可以参考这些配置的说明和key,配置hadoop集群。2.浏览apache官网,三个配置文件链接如下:http://hadoop.apache.org/docs

2020-12-08 23:55:00 41

原创 hadoop:namenode的fsimage与editlog

Namenode主要维护两个文件,一个是fsimage,一个是editlog。fsimage保存了最新的元数据检查点,包含了整个HDFS文件系统的所有目录和文件的信息。对于文件来说包括了数据块描述信息、修改时间、访问时间等;对于目录来说包括修改时间、访问权限控制信息(目录所属用户,所在组)等。editlog主要是在NameNode已经启动情况下对HDFS进行的各种更新操作进行记录,HDFS客户端执行所有的写操作都会被记录到editlog中。简言之,NameNode维护了文件与数据块的映射表以.

2020-12-08 23:14:43 21

原创 Spark Streaming读取Kafka数据的两种方式

Spark Streaming与kafka集成有以下两种接收数据的方式:基于Receiver的方式 基于Direct的方式基于Receiver方式特点: 需要使用单独的Receiver线程来异步获取Kafka数据。 Receiver底层实现中使用了Kafka高级消费者API,因此,不需要自己管理Offset,只需指定Zookeeper和消费者组GroupID,系统便会自行管理。 执行过程: Spark Streaming启动时,会在Executor中同时启动Rece

2020-12-08 23:02:54 59 1

原创 Kafka的消息格式

Commit LogKafka储存消息的文件被它叫做log,在Kafka文档中是这样描述的:Each partition is an ordered, immutable sequence of messages that is continually appended to—a commit log这反应出来的Kafka的行为是:消息被不断地append到文件末尾,而且消息是不可变的。这种行为源于Kafka想要实现的功能:高吞吐量,多副本,消息持久化。这种简单的log形式的文件结构能够

2020-12-06 23:16:38 101

原创 python多任务【三】- 进程

一、进程以及状态1. 进程程序:例如xxx.py这是程序,是一个静态的进程:一个程序运行起来后,代码+用到的资源 称之为进程,它是操作系统分配资源的基本单元。不仅可以通过线程完成多任务,进程也是可以的2. 进程的状态工作中,任务数往往大于cpu的核数,即一定有一些任务正在执行,而另外一些任务在等待cpu进行执行,因此导致了有了不同的状态 创建状态:进程在创建时需要申请一个空白PCB,向其中填写控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,.

2020-12-05 18:26:59 32

原创 python多任务【二】- 线程:同步|互斥锁|死锁

一、同步1、同步的概念同步就是协同步调,按预定的先后次序进行运行。如:你说完,我再说。"同"字从字面上容易理解为一起动作其实不是,"同"字应是指协同、协助、互相配合。如进程、线程同步,可理解为进程或线程A和B一块配合,A执行到一定程度时要依靠B的某个结果,于是停下来,示意B运行;B执行,再将结果给A;A再继续操作。解决线程同时修改全局变量的方式对于上一小节提出的那个计算错误的问题,可以通过线程同步来进行解决思路,如下:系统调用t1,然后获取到g_num的值为0,此时上一把

2020-12-05 17:24:28 38

原创 python多任务【一】- 线程

python的thread模块是比较底层的模块,python的threading模块是对thread做了一些包装的,可以更加方便的被使用1. 使用threading模块单线程执行# coding=utf-8import timedef say_sorry(): print("嗨,你好!我能帮助你吗?") time.sleep(1)if __name__ == "__main__": for i in range(5): say_sorry(

2020-12-05 15:53:24 37

原创 多任务介绍

多任务,就是操作系统可以同时运行多个任务。现在,多核CPU已经非常普及了,但是,即使过去的单核CPU,也可以执行多任务。由于CPU执行代码都是顺序执行的,那么,单核CPU是怎么执行多任务的呢?答案就是操作系统轮流让各个任务交替执行,任务1执行0.01秒,切换到任务2,任务2执行0.01秒,再切换到任务3,执行0.01秒……这样反复执行下去。表面上看,每个任务都是交替执行的,但是,由于CPU的执行速度实在是太快了,我们感觉就像所有任务都在同时执行一样。真正的并行执行多任务只能在多核CPU上实现,但是

2020-12-05 14:53:42 26

原创 UDP实现socket通信(python)

1、套接字工作流程创建一个udp客户端程序的流程<具体步骤如下:创建客户端套接字 发送/接收数据 关闭套接字一般情况下,在一台电脑上运行的网络程序有很多,为了不与其他的网络程序占用同一个端口号,往往在编程中,udp的端口号一般不绑定,但是如果需要做成一个服务器端的程序的话,是需要绑定的。2、udp发送数据:#coding=utf-8from socket import *# 1. 创建udp套接字udp_socket = socket(AF_INET, SOCK_

2020-12-05 11:41:25 88

原创 socket简介

socket简介1. 不同电脑上的进程之间如何通信首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在1台电脑上可以通过进程进程号(PID)来唯一标识一个进程,但是在网络中这是行不通的。其实TCP/IP协议族已经帮我们解决了这个问题,网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用进程(进程)。这样利用ip地址,协议,端口就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互注意:所谓进程间通信指的是:运行

2020-12-05 11:01:24 40

原创 IP地址和端口

1、ip地址的作用小李叫小张去他家玩,怎么将信息传过去?ip地址:用来在网络中标记一台电脑,比如11.0.0.1;在本地局域网上是唯一的。2、ip地址的分类(了解)每一个IP地址包括两部分:网络地址和主机地址2.1 A类IP地址一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”,地址范围1.0.0.1-126.255.255.254二进制表示为:00000001 00000000 00000000 00000001 - 011111.

2020-12-05 10:23:47 65

原创 Spark宽依赖与窄依赖

Spark中RDD的高效与DAG(有向无环图)有很大的关系,在DAG调度中需要对计算的过程划分Stage,划分的依据就是RDD之间的依赖关系。RDD之间的依赖关系分为两种,宽依赖(wide dependency/shuffle dependency)和窄依赖(narrow dependency)1.窄依赖窄依赖就是指父RDD的每个分区只被一个子RDD分区使用,子RDD分区通常只对应常数个父RDD分区,如下图所示【其中每个小方块代表一个RDD Partition】窄依赖有分为两种:一种是一

2020-12-01 00:30:16 57

原创 reduceBykey与groupByKey性能比较

reduceByKey:reduceByKey会在结果发送至reducer之前会对每个mapper在本地进行merge,有点类似于在MapReduce中的combiner。这样做的好处在于,在map端进行一次reduce之后,数据量会大幅度减小,从而减小传输,保证reduce端能够更快的进行结果计算。groupByKey:groupByKey会对每一个RDD中的value值进行聚合形成一个序列(Iterator),此操作发生在reduce端,所以势必会将所有的数据通过网络进行传输,造成不必要的浪费。

2020-12-01 00:17:51 32

原创 HDFS读写数据的过程

1、数据单位:  block :文件上传前需要分块,这个块就是block,一般为128MB,可以修改。因为块太小:寻址时间占比过高。块太大:Map任务数太少,作业执行速度变慢。它是最大的      一个单位。  packet :packet是第二大的单位,它是client端向DataNode,或DataNode的PipLine之间传数据的基本单位,默认64KB。  chunk :chunk是最小的单位,它是client向DataNode,或DataNode的PipLine之间进行数据校验的基

2020-12-01 00:06:49 117

原创 spark集群运算的模式

Spark 有很多种模式,最简单就是单机本地模式,还有单机伪分布式模式,复杂的则运行在集群中,目前能很好的运行在 Yarn和 Mesos 中,当然 Spark 还有自带的 Standalone 模式,对于大多数情况 Standalone 模式就足够了,如果企业已经有 Yarn 或者 Mesos 环境,也是很方便部署的。standalone(集群模式):典型的Mater/slave模式,不过也能看出Master是有单点故障的;Spark支持ZooKeeper来实现 HA即独立模式,自带完整的服务,可单

2020-11-30 23:27:27 66

原创 MapReduce的shuffle过程

一、MapReduce计算模型我们知道MapReduce计算模型主要由三个阶段构成:Map、shuffle、Reduce。Map是映射,负责数据的过滤分法,将原始数据转化为键值对;Reduce是合并,将具有相同key值的value进行处理后再输出新的键值对作为最终结果。为了让Reduce可以并行处理Map的结果,必须对Map的输出进行一定的排序与分割,然后再交给对应的Reduce,而这个将Map输出进行进一步整理并交给Reduce的过程就是Shuffle。整个MR的大致过程如下:Map和Re

2020-11-30 23:13:38 27

原创 Linux 常用命令

Linux主要目录速查表/:根目录,一般根目录下只存放目录,在 linux 下有且只有一个根目录,所有的东西都是从这里开始 当在终端里输入/home,其实是在告诉电脑,先从/(根目录)开始,再进入到home目录 /bin、/usr/bin:可执行二进制文件的目录,如常用的命令 ls、tar、mv、cat 等 /boot:放置 linux 系统启动时用到的一些文件,如 linux 的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub /dev:存放linux...

2020-11-29 20:56:49 36

原创 操作系统(Operation System,OS)

操作系统的发展史1、Unix1965 年之前的时候,电脑并不像现在一样普遍,它可不是一般人能碰的起的,除非是军事或者学院的研究机构,而且当时大型主机至多能提供30台终端(30个键盘、显示器),连接一台电脑为了解决数量不够用的问题1965 年左后由贝尔实验室加入了麻省理工学院以及通用电气合作的计划 —— 该计划要建立一套多使用者(multi-user)、多任务(multi-processor)、多层次(multi-level)的MULTICS操作系统,想让大型主机...

2020-11-29 20:23:56 64

原创 正向代理、透明代理、反向代理

代理方式有三种:正向代理、透明代理和反向代理。一、正向代理正向代理是一个位于客户端和目标服务器之间的代理服务器(中间服务器)。为了从目标服务器取得内容,客户端向代理服务器发送一个请求,并且指定目标服务器,之后代理向目标服务器转发请求并且将获得的内容返回给客户端。正向代理的情况下客户端必须要进行一些特别的设置才能使用。正向代理可以但不限于为局域网内客户端做代理,它扮演的角色类似于NAT。代理内部主机上网,共享上网,缓存,控制内网用户上网行为等功能(客户端需要设置代理服务器的IP和代理端口)

2020-11-29 20:05:58 37

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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