自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (1)
  • 收藏
  • 关注

原创 小白【mySQL】left join、right join和join的区别

left join、right join和join的区别好久没有更新文章了,今天说说Mysql中那些小事,说到Mysql,用了挺久的了,但是又一个问题困扰着我,就是 left join 与 right join 与 join 到底什么区别?网上一搜就是一张图,如下:真是一张图,道清了所有未来的感觉,那么如果还有人不懂,我们就直接上手:两张表如图:一、left join一下看结果:select *from kemu left join scoreon kemu.id = source.

2021-01-03 10:13:24 297

原创 数仓建模(一)----数据库范式理论之三范式

文章目录范式理论何为范式,何为建模函数依赖1. 完全函数依赖2. 部分函数依赖3. 传递函数依赖第一范式第二范式第三范式范式理论何为范式,何为建模范式理论和谁有关?和关系建模有关,通常我们说的三范式是啥东西,啥叫范式。所谓的范式,就是我们在关系建模的时候所遵从的一些规范。所谓的建模,就是意思是,你要建哪些表,每张表与每张表的关系是什么样的。每张表里大概又哪些字段,这就是所谓的数据库建模。而关系型数据库设计时,遵照一定的规范要求,目的在于降低数据的冗余性。为什么要降低数据冗余性?优点:???

2020-06-23 23:15:50 3188 3

原创 数据集市搭建

数据集市深刻理解数据集市概念数据集市,存在于数仓之中,可以理解为是数仓的一个分层,市面上数仓分层繁多,大致为 ODS层镜像层,DWD明细层,DWS宽表层,DIM维度层,ADS指标体系层,APP应用层,DM数据集市层。除去ODS层,APP、ADS层,中间的DWD、DWS统称为中间层,在数仓中,有个规定,就是中间层不可跨域,而DM层,是凌驾于ADS层,更贴近应用的层级,而这一层,是可以跨域的,并且可以理解成,是可跨域的宽表层。该层主要是加工多维度冗余的宽表,解决什么问题呢?解决复杂的查询问题,多角度分析

2021-07-07 21:17:17 1447

原创 基于分区合并小文件处理

基于分区内合并小文件处理数据治理同学已经砸门了数据治理同学已经砸门了,说每次任务单独的分区会产生大量小文件,基于此类问题,我们定出方案。方案如下:生产脚本为代码:spark-submit \--master yarn \--deploy-mode cluster \--executor-memory= 25G \--executor-cores=6 \--num-executors=100 \-- class 此处为JAR包中全类名 case: cn.didi.dwd.leader.Ex

2021-07-07 17:44:42 309

原创 SparkSQL广播实现处理数据倾斜

SparkSQL处理数据倾斜广播实现思路伪代码原因是因为我们在做一个需求的时候由于计算量非常大,数据量不是很大,但是会有很多空值,导致数据倾斜,我们采取了Spark SQL方式实现需求,同时采取了广播优化的方案策略。object External { val RESU_SAVE_TABLE_NAME = "dwd_led_tab" val session = session.conf.set("spark.app.name","External") session.conf.set("spar

2021-07-07 16:11:51 400

原创 数仓APP层如何做CUBE

数仓CUBE表深刻理解数仓,在我们做中间层建设的时候,不会做真正的CUBE,而真正的CUBE,要么就是DS(数据分析师)在做,要么,我们在应用层(APP层),将其做成CUBE,并且严格按照数仓的统一标准来做。对于空值的处理:第一,所有的维度字符串,全部为其他。第二,所有的ID,全部为-999。第三,所有金额全部置成0第四,面向全国做CUBE的时候,所有空值为-999999需求:时间维度:by天品类维度:维度中文维度英文后端汇总品类gop_name后端一级品类

2021-07-07 11:39:05 579 1

原创 累积快照事实表的制作方式

累积快照事实表首先我们要考虑,为什么要做累积快照的事实表,事实表就能不做解释了,来理解为什么要做累积快照。累计快照事实表用于跟踪业务事实的变化。例如,数据仓库中可能需要累积或者存储订单从下订单开始,到订单的完结。中间整条的链路是什么样子的呢?case :订单的创建时间、订单修改时间、订单关闭时间(用户取消或者超时)、实际下单时间、支付完成时间、预期发货时间、确认收货时间。这是一张订单表中,该有的时间。根据时间节点,来跟踪订单生命周期的进展情况。当这个业务过程进行的时候,事实表的记录也要不断的更新。但

2021-07-06 14:49:33 1244 7

原创 数仓粒度初级篇

数仓中的粒度数据粒度对于Data Warehouse的数据模型建设,我们逃离不了的一个话题就是粒度,而Kimball的建模四部曲中,至关重要的第二步,就是确认粒度,那么粒度,到底是什么?这个模糊的概念对于初学者非常的不友好,不友好在抽象,太抽象,很难去深刻理解这个概念。而我们在真正的工作中,对于粒度,我有以下几个CASE,方便读者能够深刻理解。今天我们就用大白话,手撕粒度。首先是数据粒度:什么是数据粒度,数据粒度准确的描述,就是确定数据惟一。在一个表中,我查找ID,ID是唯一,那么这个粒度就是ID,什

2021-07-05 22:17:35 536 2

原创 HBase求生之路-----HBase优化(二)

文章目录RowKey设计设计手段设计思想RowKey设计设计手段1. 生成随机数、hash、散列值比如:原本rowKey为1001的,SHA1后变成:dd01903921ea24941c26a48f2cec24e0bb0e8cc7原本rowKey为3001的,SHA1后变成:49042c54de64a1e9bf0b33e00245660ef92dc7bd原本rowKey为5001的,SHA1后变成:7b61dec07e02c188790670af43e717f0f46e8913在做此操作之前

2020-06-26 16:12:16 462

原创 HBase求生之路-----HBase优化(一)

文章目录HBase求生之路(优化篇)热点问题预分区第一种:手动设定预分区第二种:16进制序列预分区第三种:文件设置预分区使用JAVA的API创建预分区表HBase求生之路(优化篇)热点问题什么叫热点问题,什么叫预分区?什么叫RowKey设计?三里屯VIP带你慢慢了解三个问号小朋友。什么叫做预分区?大家都知道我Hbase建立一张表,会有一个Region,有这么一个分区的概念,正常情况下,我们的Region是不是会随着数据量的增长,会进行分裂Split,它这个分裂是不是自动分裂的,最开始只有一个,后

2020-06-25 18:50:29 366

原创 HBase超详细版本教学六

文章目录Hbase---RegionSplitRegion分裂策略Region分裂过程Region分裂时机Hbase—RegionSplitRegion分裂策略我们刚建立表的时候只有一个Region,随着我们表中的数据量不断的增长,我们的Region会逐渐的分裂,相当于一个Region,变成了两个Region,之前的Region就没了,那么,这个Region什么时候进行分裂呢?Region分裂过程Region分裂完毕之后,尽可能的会让两个Region分裂的数据相同,这里提一个词汇预分区,

2020-06-25 13:16:29 300

原创 HBase超详细版本教学五

文章目录HBase读写流程底层原理读流程1读流程2StoreFile CompactionHBase读写流程底层原理读流程1我们还是以三个RegionServer为例,一个客户端,一个zk。我们读的时候肯定是要发get请求了。我们要通过Table,RowKey寻找数据,我们通过RowKey就可以判断出在哪个Region,然后通过Region就可以找到哪个RegionServer,然后我们客户端就可以通过RegionServer去读我们想要的数据了。实际上我们读的时候也是获取源数据表的信息,通过谁

2020-06-22 00:07:53 358

原创 HBase超详细版本教学四

文章目录HBase读写流程底层原理写流程MemStore FlushHBase读写流程底层原理上一篇我们已经熟悉了RegionServer所有的组件了,我们今天了解一下HBase的写流程,我们需要将之前的组件串联起来写流程我们在写的时候会有一个Put操作,图中我们有一个Client客户端,这个客户端可以是我们的Shell客户端也可以是我们的API客户端,API客户端指的是我们写的JAVA代码,里面还有一个zk,但是没有Master。那我们写数据的时候,我们是怎么写的呢?我们今天想写数据肯定要一

2020-06-21 18:44:58 473

原创 HBase超详细版本教学三

文章目录HBase进阶RegionServer简易版本架构RegionServer详细版本架构三里屯的回忆HBase进阶RegionServer简易版本架构在我们的Hbase中,一个Region的概念,我们HBase中的每个表进行横向拆分,拆分完毕之后呢,形成分区的概念,我们成为RegionRegion当中应该有什么呢?一个Region当中应该有几个Store呢?有几个Store是列族决定的下图中我们有四个Region,说明一个表,分成了四个Region。两个列族。每一个但愿交给一个Store

2020-06-21 11:52:10 1002

原创 Kafka(分区策略以及生产者)

文章目录Kafka生产者分区原则与ACK机制生产者之消息可靠性ISRACKACKS=1时,数据丢失案例刨析ACKS=-1时,数据重复案例Kafka故障处理细节Exactly Once语义幂等原理Kafka生产者生产者向Topic的分区中发送数据,每个数据对应的进入不同的分区,因为我分区之后就可以横向扩展了,增加节点了,分区之后并发的读写都可以提高并发量,提高吞吐量。那么生产者是怎么向分区发送数据的呢,我们今天producer发送的数据封装成一个ProducerRecord对象我们从最后一个开始看,

2020-06-21 00:14:00 599

原创 Kafka(架构深入理论)

文章目录Kafka工作流程Kafka文件存储机制Kafka工作流程下图左边是一个生产者,右边是一个消费者组,生产者于消费者面向的都是一个Topic,在Kafka中,即使我们不手动创建Topic,有生产和消费了,也会自动生成Topic,而且自动创建的这个Topic默认是一个分区,一个副本,我们这里创建的是一个Topic三个分区,对应三个副本生产者给Topic发消息(数据),是怎么发的呢?一个小方块就代表一条数据,一条消息,它不是一个一个进来的,是一批一批进来的,也就是说,生产者向Kafka中的Topi

2020-06-20 22:43:13 570

原创 Kafka(基础篇)

文章目录消息队列的两种模式定义Kafka 横向扩展与纵向扩展思考题Kafka的搭建细节技巧关于环境变量消息队列的两种模式点对点模式:(一对一,消费者主动拉取数据,消息收到后消息清除)相当于一个生产者对应一个消息队列,一个消息队列对应一个消费者。发布/订阅模式(一对多,消费者消费数据之后不会清除消息)一个生产者对应一个Topic,一个Topic中有多个分区,每个分区对应不同的消费者组中的消费者前来消费。定义Kafka是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时处理领域

2020-06-20 12:29:17 571

原创 HBase超详细版本教学一

文章目录HBase基础什么时候用HBaseHBase定义HBase数据模型HBase简单逻辑结构HBase简单物理结构HBase基础什么是HBase它第一句就告诉我们了是Hadoop的Database,跟Hadoop有关系的,a distributed分布式的,scalable可扩展的,根据这句话的描述,我们可以知道,HBase的数据是存储再Hadoop中HDFS中的,它数据是要落盘的。我们搭建HBase的时候呢,它是一个集群,是分布式的,可扩展的意思就是横向扩展的意思。可以添加很多很多的节点。b

2020-06-20 11:21:11 2352

原创 Spark内核源码(三)---向Yarn提交任务

Spark内核源码(三)–向Yarn提交任务上一章节,我们聊到了这里:我们点进去这个方法看一看这个–Class就是前面的我们提到过的提交参数,就是–Class xxxx.WordCount,这个地方之后啊,它才会new一个Client,创建一个客户端,它到底在干嘛呢?我们点一下这个new Client这句话见名知意,为什么叫Yarn客户端呢?那么它有客户端,是不是应该有个服务器呢?还得是个Yarn服务器,所以在我们当前环境,我们应该将Yarn服务器创建出来这里可以说明一件事,当前

2020-06-11 23:45:07 237

原创 Spark内核源码(二)----反射执行对象方法

Spark内核源码—反射执行对象方法上一篇我们走到了提交方法runMain这个方法,我们上次说了,只要走完这个方法,整个逻辑就结束了,那么它到底,走了什么它调用了prepareSubmitEnvironment(args)方法,意思是准备提交的环境,那么,它左边的三个值又是什么呢?我们将源码往下看我们点这个反射进去将我们指定的类名,加载到我们的方法去内存空间当中,ClassName是类的名称,而Class.forName是加载的过程,早期的JDBC都是这样干的,那我们回退到它上一层就知道它是

2020-06-11 21:06:56 220

原创 Spark内核源码(一)---提交源码

Spark内核源码—提交源码特此声明:分享一波提交源码,此源码手稿,均来自本人的印象笔记手稿,纯手敲,欢迎来怼原创打开这个脚本之后,我们会发现,其实就是在找到最底下的CMD其实就是一个JAVA的指令我们将他们组合组合来试试,封装组合完成之后,看看是什么样的首先它是这样的,在第一个文件的最底下然后我们来到了Spark-Class文件中,找到了CMD那里,然后CMD往上走,走到build_command,然后里面走的是JAVA那里,我们把类之前的拿过来,继续组装替换spark-class

2020-06-11 21:06:31 230

原创 Centos7网卡消失不见了,怎么重新让网卡站起来

Centos7操作系统远程连不上Linux 操作系统执行 ifconfig 发现网卡不见了解决:按顺序执行以下命令都是在root的权限下systemctl stop NetworkManagersystemctl disable NetworkManagersystemctl start network.service最后重启网卡重启网卡service network restart查看网卡 ifconfig消失的网卡出现了,一切恢复正常...

2020-06-06 19:44:43 5483 3

原创 Caused by: java.sql.SQLException: null, message from server: "Unknown error 1130"

进入到Mysql中,执行以下操作即可原因:没有授权远程连接。mysql> use mysql;mysql> select user, host from user;mysql> update user set host="%" where user=“root”;mysql> flush privileges;mysql> quit;

2020-05-12 12:39:08 2765

原创 Hadoop----MR(Map与Job的联系源码)----(源码篇二)

MR–Map源码要是看提交任务和map是怎么连通的 需要从提交任务这边找到最后提交任务那里由此进入走到这一步,点击submitJob进入这个job 继承了thread new的时候 下面调用了一个start 开启线程 所以job里面的run方法 被调用 ,进入本地实现类中。线程启动在这里,我们去寻找一下run我们直接找对应的run方法,线程的真正开启,是线程的run方法...

2020-04-19 14:47:15 303

原创 Hadoop---MR的Job提交源码---(源码篇一)

MR的Job提交源码刨析一遍切片原理以源码角度,来深刻理解MR工作原理。MR源码分析:(wordCount案例)–入口类问题:MR中的Job,是如何提交的首先:DeBug流程走一波。进入提交作业方法:它这里做了一件事,获取了配置信息,思考题:什么配置信息?不会可以留言通过YarnClientProtocolProvider | LocalClientProtocolPr...

2020-04-19 10:59:24 434

原创 纠删码

纠删码【摘要】:副本策略和纠删码是存储领域常见的两种数据冗余技术。相比于副本策略,纠删码具有更高的磁盘利用率。 Reed-Solomon码是一种常见的纠删码。多副本策略即将数据存储多个副本(一般是三副本,比如HDFS),当某个副本丢失时,可以通过其他副本复制回来。三副本的磁盘利用率为1/3。纠删码技术主要是通过纠删码算法将原始的数据进行编码得到冗余,并将数据和冗余一并存储起来,以达到容错的目...

2020-04-14 23:25:31 841

原创 Hadoop的Web页面没有删除权限问题

Hadoop的Web页面没有删除权限问题两个解决方法:第一:hadoop默认情况下开启了权限检查,且默认使用dir.who作为http访问的静态用户,因此可通过关闭权限检查或者配置http访问的静态用户为fxy(自己用户),二选一即可.在core-site.xml中修改http访问的静态用户为fxy<property> <name>hadoop.h...

2020-04-13 17:47:17 2550 1

原创 解决MR任务运行过程中出现虚拟内存超标问题

解决MR任务运行过程中出现虚拟内存超标问题在yarn-site.xml中加入如下配置: <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property>...

2020-04-13 17:35:12 335

原创 ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.

ERROR: Attempting to operate on hdfs secondarynamenode as rootERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.亲测有效,不信翻我搭建的完全分布式帖子解决方案在hadoop-evn.sh这个配置文件中,加入环境变量再...

2020-04-12 09:43:12 1026

原创 五行代码,实现二维码功能,开发必备,只发干货

博主风格,废话不多,直接上货package cn.tedu.qr;import org.junit.Test;/** * 这个类用来表示二维码程序 * @author * */public class QR { //创建create方法,用来生成二维码的图片 //单元测试方法:@Test @Test public void create() { //设置一...

2020-04-05 14:50:11 549

一键分发脚本,开发必备

一件分发脚本,在使用过程中,更改服务器名称即可,一键搭建Hadoop不是梦,直接配置一个Hadoop,用该脚本分发,瞬间完成服务器搭建,为开发人员节约了大量的时间,和精力。

2020-03-15

空空如也

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

TA关注的人

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