自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Hive执行流程原理

hive执行流程原理

2022-07-17 18:06:35 2938

原创 Idea使用SVN提交报错:“svn: Commit blocked by pre-commit hook (exit code 1) with output: Can't get Mantis_K”

出现这种情况一般是两种原因和解决办法:1,提交的注释必须要按照固定的格式,这只能问公司的同事了2,可能是提交的注释字符长度不够,这样就需要麻烦把这次提交的内容说的详细一点了.点开右下角的“Event Log”:提示信息说Log信息不可为空,并且大于4个字符,这里说的Log Message指的是commit注释信息,所以提交的时候,添加上就可以。...

2020-01-15 17:49:32 990

原创 Java实现,手写二叉树

一、基本概念二叉树:每个节点最多有两个子树的结构; 满二叉树:除了最后一层没有任何节点外,每一层的所有节点都有两个子节点的二叉树; 完全二叉树:结构与满二叉树类似,不同点在于最后一层可以不满,但最后一层的节点必须连续集中再最左边; 二叉搜索树:各节点的值有大小要求的二叉树,左节点的值<中节点的值<右节点的值。二、树的存储方式1、数组形式 使用数组存储,...

2019-12-20 12:14:37 808

原创 Hive中的各种存储格式的区别

hive包含的文件存储格式有:textFile、SequenceFile、RCfile、ORCFile,parquet。textFile: 默认的文件格式,行存储。 优点:最简单的数据格式,便于和其它工具(pig,grep,awk)共享数据,便于查看和编辑;加载快; 缺点:存储空间占用较大,I/O性能低;不可对数据进行切割、...

2019-11-16 14:23:41 1435

原创 CF中User-Based与Item-Based的区别

先来了解以下两者的实现思路:User-Based算法基本思路:找到与目标用户购买过相(同)类似商品的用户,作为相似用户; 得到相似用户评价很高的,并且目标用户没有评分过(购买过)的Item,并推荐给目标用户;Item-Based算法基本思路:计算目标用户评分过(购买过)的Item与其他Item的相似度; 根据目标用户的历史行为和物品的相似度,为目标用户生成推荐列表; ...

2019-11-05 14:05:11 1253

原创 在线实验——ABTest

ABTest是为了确认两种方案中哪一种方案更适合。原理,让一部分用户使用A方案,另一部分用户使用B方案,记录下两部分用户的反馈情况,然后根据相应的指标确认A,还是B更适合。 在推荐系统中,为了对比不同的算法、不同数据集对最终结果的影响,通过一定的规则将用户随机分成几组,并对不同组才去不同的召回或推荐算法,最终通过不同组的用户的各种评估指标来对比分析。基本流程:...

2019-11-05 12:47:04 835

原创 HDFS的读写过程

一、HDFS的写过程 Client节点,调用create方法创建DistributedFileSystem对象,然后向NameNode发送写请求,NameNode允许之后,返回DataNode节点信息给Client节点,接着Client调用write方法,创建FSDataOutputStream对象,根据NameNode返回的DataNode节点信息,开始向指定的DataNo...

2019-10-28 12:41:29 364

原创 Spark的Yarn CLuster与Yarn Client区别

一、Yarn Cluster模式二、Yarn Client模式 对比两种模式的架构图,可以看出,两者的本质区别:AM进程的区别。 Cluster模式下,driver运行在AM中,负责向Yarn(RM)申请资源,并监督Application的运行情况,当Client(这里的Client指的是Master节点)提交作业后,就会关掉Client,作业会继续...

2019-10-24 14:52:33 190

原创 HBase的容错机制

一、HBase系统架构图 先来认识以下HBase是如何操作数据的。 读数据:Client首先向ZK发送读取数据的请求,ZK返回metaData表所在的HRegionServer的元数据信息给Client,Client到metaData表所在的HRegionServer请求数据的元数据信息,包括数据HRgion所在的HRegionServer位置信息,数据的r...

2019-10-18 18:16:48 670

原创 高效查找素数

素数:一个数如果只能被1和它本身整除,那么这个数就是素数第一版:思路:遍历[2,n)每个数,判断每个数是否是素数,判断素数的思路是一次将该数被从2到num-1整除,如果其中某个数可以整除,直接返回false,说明不是素数,如果返回true,说明是素数,所以count+=1./** * 统计[2,n)之间有多少个素数 * @param n * @retur...

2019-10-14 18:05:21 239

原创 Log4j配置文件

# log4j.rootLogger=INFO,stdoutlog4j.rootLogger = debug,stdout,D,E# 日志输出到consolelog4j.appender.stdout = org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.target = System.outlog4j.appender.st...

2019-10-13 21:12:59 118

原创 SparkStreaming与SparkSql整合使用

SparkStreaming的数据是DStream的形式,本质上是RDD类型数据,而SparkSql则是DataFrame的数据类型,所以要使用DataFrame,就需要创建SparkSession会话。SparkStreaming和SparkSession的创建都会用到SparkConf,为了一致性,所以两者需要公用一个SparkConf。一、创建一个SparkSession...

2019-10-13 11:21:58 1266

原创 SparkStreaming黑名单过滤

一、思路1、获取黑名单数据,处理成RDD形式 一般情况,黑名单数据存储在数据库里面,获取之后将每个黑名单数据处理成(blackName,true)的Tuple形式;2、接收数据,处理成(k,v)形式 从数据源接收到数据之后,取出name作为key,整条数据作为value,譬如:输入数据为"20190929zhangsan 18",那么处理后为(zhan...

2019-10-13 09:06:04 525

原创 Spark Streaming到Mysql

package com.cjsimport java.sql.DriverManagerimport org.apache.log4j.{Level, Logger}import org.apache.spark.SparkConfimport org.apache.spark.streaming.{Seconds, StreamingContext}import org.apac...

2019-10-12 19:30:41 185

原创 Spark Streaming消费Kafka消息的两种方式

一、Receiver方式 Receiver方式,消息的offset存储在zookeeper。由Receiver维护,Receiver所扮演的角色是数据接收器。数据从Kafka传到Receiver中,Receiver将数据存储在内存或者磁盘,然后记录在容错日志文件系统中,同时将消息的offset更新到zookeeper中,元数据信息传给Driver。其使用的是Kafka高阶AP...

2019-10-10 17:20:34 1785 2

原创 Java实现双向链表

本篇介绍Java实现双向链表的peak(获取第一个节点对象)、removeFirst(删除第一个节点)、find(查找指定节点)、insertLast(从尾部插入节点)等方法。一、创建节点类package linkedList; /** * 节点类 * 数据有id、nextNode * nextNode用于指向下一个节点对象 */public class L...

2019-10-09 23:40:55 156

原创 Shuffle的两种写操作

一、简介 在Hadoop的MapReduce框架中,Shuffle是连接Map和Reduce之间的桥梁,Map的输出要被使用到Reduce中必须经过Shuffle这个环节。由于Shuffle阶段涉及磁盘的读写和网络传输,因此Shuffle的性能高低直接影响到整个程序的性能和吞吐量。在MapReduce过程中,需要各个节点上的同一类数据汇集到某个节点进行计算,把这些分布在不同节点的...

2019-10-09 14:14:10 654

原创 Java实现单向链表

本篇介绍Java实现单向链表的peak(获取第一个节点对象)、removeFirst(删除第一个节点)、find(查找指定节点)、remove(移除链表中指定节点对象)等方法。一、创建节点类package linkedList;/** * 节点类 * 数据有id、nextNode * nextNode用于指向下一个节点对象 */public class Li...

2019-10-09 00:31:57 188

原创 Spark Streaming容错性

在一个Spark Streaming应用开始时,相关的StreamingContext使用SparkContext启动接收器Reciver成为长驻运行任务。这些接收器接收并保存流数据到Spark内存中以供处理。如上图:接收数据:BlockIntervalTimer会每隔一段时间(默认200ms)将收集到的数据打包成一个block,存储到Executor的内存或者磁盘中。如果...

2019-10-07 17:01:28 240

原创 回归算法

一、概念 回归分析利用样本(已知数据),产生拟合方程(根本作用),从而对未知数据进行预测。 如果用自变量x和因变量y表示他们两者的关系,可以表示为:,为关系方程的参数,此外,还受到噪声(误差)的影响: 如,一组随机变量,和另一组随机变量,那么研究和之间的关系的统计方法,就叫作回归分析。假设和只是一个单一的映射关系,那么又可以称之为一元回...

2019-09-21 22:59:46 619

原创 LR与Sigmod函数

在使用LR时,经常用Sigmod函数来表示一个概率,为什么LR可以使用Sigmod函数呢? 首先,LR的假设只有一个,就是两个类别的特征服从均值不等、方差相等的高斯分布。为什么假设它服从高斯分布?一方面,高斯分布容易理解;另一方面,从信息论的角度看,当均值和方差已知时,高斯分布是熵最大的分布。当熵分布最大时,可以平摊风险。就如二分查找法,每次都将中间作为查找点,目...

2019-09-21 22:10:47 235

原创 决策树的构建

(项目地址:https://github.com/ChanKamShing/decisionTree.git)一、概念 决策树可分为两类:回归决策树和分类决策树。回归决策树:对连续变量构建决策树; 分类决策树:对离散变量构建决策树。1、信息增益 决策树必须涉及到一个概念,就是信息增益。信息增益又基于信息熵的知识(可参考里面关于信息熵的部分内容:htt...

2019-09-20 13:26:39 1548

原创 K最近邻算法

一、原理 K最近邻算法(K-Nearest Neighbor, KNN)是最基本的分类算法,其基本原理是:从最近的K个邻居(样本)中,选择出现次数最多的类别作为判定类别。K最近邻算法可以理解为是一个分类算法,常用于标签的预测,如性别。实现KNN算法核心的一般思路:相似度计算——计算未知样本和每个训练样本的距离; 排序——按照距离的递增关系排序; 统计标签——得到距离最...

2019-09-18 18:36:08 2574

原创 相似度计算

相似度计算在数据挖掘和推荐系统中有着广泛的应用场景。例如:CF协同过滤算法中,可以利用相似度计算用户之间(User-Based)或者物品之间(Item-Based)的相似度; 在利用k-means进行聚类时,判断个体所属类别,可以使用相似度计算公式计算个体到簇类中心的距离; 利用KNN进行分类时,也可以利用相似度计算个体与已知类别之间的相似性,判断个体所属的类别;1、欧式距离 ...

2019-09-18 13:13:54 622

原创 数据离散化与Python实现

一、原理 数据离散化(也称,数据分组),指将连续的数据进行分组,使其变为一段离散化的区间。 根据离散化过程中是否考虑类别属性,可以将离散化算法分为:有监督算法和无监督算法。事实证明,由于有监督算法充分利用了类别属性的信息,所以再分类中能获得较高的正确率。常用的数据离散化方法:等宽分组 等频分组 单变量分组 基于信息熵分组 数据离散化...

2019-09-17 17:03:14 1766

原创 数据标准化与Python实现

一、原理 数据标准化(Normalization):将数据按照一定比例进行缩放,使其落入到一个特定的小区间。数据标准化的类别:Min-Max标准化 Z-Score标准化(Standard Score,标准分数) 小数定标(Decimal scaling)标准化 均值归一化 向量归一化 指数转换1、Min-Max标准化 Min-Max标准化,指...

2019-09-17 00:20:44 1749

转载 LaTex数学公式语法

转发链接:https://blog.csdn.net/so_so_y/article/details/77371446下面为个人补充:希腊字母:符号 语法 符号 语法 符号 语法 符号 语法 \mu \sigma \gamma \delta \zeta \et...

2019-09-16 20:05:52 154

原创 Item协同过滤(基于Python实现)

在众多召回策略里面,基于Item与基于User(可参考:https://blog.csdn.net/weixin_39400271/article/details/100052023)在实现上非常相似。所以这里使用了跟基于User协同过滤的数据u.data。u.data数据格式(user_id, item_id, rating, timestamp)实现原理: ...

2019-09-05 09:37:15 337

原创 Spark实现TF-IDF——文本相似度计算

在Spark1.2之后,Spark自带实现TF-IDF接口,只要直接调用就可以,但实际上,Spark自带的词典大小设置较于古板,如果设置小了,则导致无法计算,如果设置大了,Driver端回收数据的时候,容易发生OOM,所以更多时候都是自己根据实际情况手动实现TF-IDF。不过,在本篇文章中,两种方式都会介绍。数据准备: val df = ss.sql("se...

2019-09-01 00:11:53 1590 2

原创 User协同过滤(基于Spark实现)

项目地址:https://github.com/ChanKamShing/UserCF_Spark.git推荐系统的作业流程:召回/match(推荐引擎)-> 物品候选集 -> 过滤 -> 排序 -> 策略(保证结果多样性) -> 推荐list协同过滤CF属于第一阶段,我们常常称之为“推荐引擎”。“推荐引擎”可以有多个基准,包括:基于相似用户、基于相似物品...

2019-08-25 12:22:55 980

原创 User协同过滤(基于Python实现)

项目地址:https://github.com/ChanKamShing/UserCF_python.git推荐系统的作业流程:召回/match(推荐引擎)-> 物品候选集 -> 过滤 -> 排序 -> 策略(保证结果多样性) -> 推荐list协同过滤CF属于第一阶段,我们常常称之为“推荐引擎”。“推荐引擎”可以有多个基准,包括:基于相似用户、基于相似物...

2019-08-24 18:08:02 597

原创 Spark存储原理——数据写入过程

Spark数据的写入过程的入口点位doPutIterator方法。下面是一些方法的调用关系图: 在该方法中,根据数据是否缓存到内存中处理。如果不缓存到内存中,则调用BlockManager的putIterator方法直接存储到磁盘中;如果缓存到内存中,则先判断数据存储级别是否对数据进行了反序列化操作:如果设置了反序列化操作,则调用putIteratorAsVa...

2019-08-19 09:41:55 486

原创 Flink的WaterMark,及demo实例

实际生产中,由于各种原因,导致事件创建时间与处理时间不一致,收集的规定对实时推荐有较大的影响。所以一般情况时选取创建时间,然后事先创建flink的时间窗口。但是问题来了,如何保证这个窗口的时间内所有事件都到齐了?这个时候就可以设置水位线(waterMark)。概念:支持基于时间窗口操作,由于事件的时间来源于源头系统,很多时候由于网络延迟、分布式处理,以及源头系统等各种原因导致源...

2019-08-18 20:02:52 462

原创 Spark的TaskSetManager(任务管理器)的排序算法

Spark作业执行中,有一个步骤是给任务进行资源分配,实际上这些任务由一些任务管理器TaskSetManager负责管理,资源分配过程中,会先根据某种排序算法排好序,然后根据就近原则给任务进行资源分配。那么关于TaskSetManager的排序是根据哪个算法呢?现在就来介绍。 排序算法由两种调度策略FIFOSchedulingAlorithm和FairSchedu...

2019-08-15 11:24:41 306

原创 SparkSql中,关于Hive表与Parquet文件的Schema转化兼容

从表Schema处理角度对比Hive和Parquet,两者主要的区别:Hive区分大小写,Parquet不区分大小写; Hive允许所有的列为空,而Parquet不允许所有列为空;基于上述两点区别,在进行Hive metastore Parquet转换为SpqrkSql Parquet时,需要将两者的结构进行一致化,其一致化规则:两者同名字段必须具有相同的数据类型,一致化后的字段必须为...

2019-08-10 17:52:41 903

原创 SparkSQL自定义强类型聚合函数

自定义强类型聚合函数跟自定义无类型聚合函数的操作类似,相对的,实现自定义强类型聚合函数则要继承org.apache.spark.sql.expressions.Aggregator。强类型的优点在于:其内部与特定数据集紧密结合,增强了紧密型、安全性,但由于其紧凑的特性,降低了适用性。准备employ.txt文件:Michael,3000Andy,4500Justin,...

2019-08-08 22:24:33 203

原创 SparkSQL自定义无类型聚合函数

准备数据文件:Michael,3000Andy,4500Justin,3500Betral,4000一、定义自定义无类型聚合函数 想要自定义无类型聚合函数,那必须得继承org.spark.sql.expressions.UserDefinedAggregateFunction,然后重写父类得抽象变量和成员方法。package com.cjsimport ...

2019-08-08 22:17:16 176

原创 RDD转DataFrame常用的两种方式

随着Spark1.4.x的更新,Spark提供更高阶的对象DataFrame,提供了比RDD更丰富的API操作,同时也支持RDD转DataFrame(下面简称“DF”),但是要注意,不是任意类型对象组成的RDD都可以转换成DF,,只有当组成RDD[T]的每一个T对象内部具有鲜明的字段结构时,才能隐式或者显示地创建DF所需要的Schema(结构信息),从而进行RDD->DF转换...

2019-08-07 22:47:07 650

原创 Spark作业执行原理(六)——获取执行结果

对于Executor的计算结果,会根据结果的大小使用不同的处理策略:计算结果在(0,128MB-200KB)区间内:通过Netty直接发送给Driver终端; 计算结果在[128MB, 1GB]区间内:将结果以taskId为编号存入到BlockManager中,然后通过Netty把编号发送给Driver终端;阈值可通过Netty框架传输参数设置spark.akka.fra...

2019-08-05 15:03:27 731

原创 Spark作业执行原理(五)——执行任务

在Spark消息通信原理(三)(https://blog.csdn.net/weixin_39400271/article/details/97136007)中第(6)点提到过,Executor是任务执行的容器,executor接收到LaunchTask消息之后(其实是GoraseGrainedExecutorBackend接收到来自DriverEndpoint的LaunchTas...

2019-08-05 11:32:39 140

空空如也

空空如也

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

TA关注的人

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