自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(342)
  • 资源 (6)
  • 问答 (1)
  • 收藏
  • 关注

原创 一篇文章搞懂数据埋点与数据同步

目录(1)到底什么是埋点(2)企业数据埋点方案(3)企业数据同步方案(4)数据漂移场景及处理方案(1)到底什么是埋点埋点的概念:埋点是数据采集中的一个统称,通常也叫做事件追踪(Event Tracking),它主要针对特定用户行为或事件进行捕获、处理和发送的相关技术及其实施过程。埋点是为了满足快捷、高效、丰富的数据应用而做的用户行为过程及结果记录。数据埋点是一种常用的数据采集的方法。埋点是数据的来源,采集的数据可以分析网站/APP的使用情况,用户行为习惯等,是建立用户画像、用户行为路径等数据产品的基础

2021-12-05 13:26:22 1529

原创 大数据开发工程师需要了解的【数仓中事实表的设计】

目录(1)如何正确看待事实表(2)企业中事实表的设计原则(1)如何正确看待事实表(2)企业中事实表的设计原则原则一:尽可能包含所有与业务过程相关的事实在事实表中应该尽量包含所有与业务过程相关的事实,即使存在冗余,但是因为事实通常为数字类型,带来的存储开销也不会很大。原则二:只选择与业务过程相关的事实比如在订单的下单这个业务过程的事实表设计中,不应该存在支付金额这个标识支付业务过程的事实。原则三:分解不可加性事实为可加的组件比如订单的优惠率,应该分解为订单原价金额与订单优惠金额两个事实存储在

2021-11-23 18:14:42 2165

原创 大数据开发工程师需要了解的【数仓中的维度设计】

目录(1)数仓模型如何分层(2)企业数仓模型分层架构(3)维度设计如何理解(4)维表是怎么生成的(5)维度整合的两种策略(6)维度拆分的最佳方案(6)维度拆分的最佳方案(1)数仓模型如何分层企业常用的数据模型分为三层:操作数据层(ODS)公共维度模型层(CDM)数据应用层(ADS)其中公共维度模型层包括:明细数据层(DWD)汇总数据层(DWS)操作数据层(ODS) :把操作系统数据几乎无处理地存放在数据仓库系统中。同步:结构化数据增量或全量同步数仓结构化 :非结构化(日志)

2021-11-16 22:06:07 4113 2

原创 大数据开发工程师需要了解的【数仓中的指标体系】

目录(1)为什么要构建指标体系(2)如何搭建有效的指标体系(3)指标类型及关系(4)企业常用的指标体系方法论(1)为什么要构建指标体系指标体系的理解:指标体系是将零散单点的具有相互联系的的指标,系统化的组织起来。通过单点看全局,通过全局解决单点的问题。比如:本月销售净利润为20W,上月销售净利润为30W。从单点看是盈利的,但从全局看是亏损的。建立业务量化衡量的标准:指标体系可以建立业务量化衡量的标准,数据分析的目的就是说明、衡量、预测业务的发展,比方说衡量一个门店经营的状况,一个门店月净利润

2021-10-29 19:31:57 1634

原创 Hive中collect_list()排序问题详解

来看一道互联网公司的面试题:有个用户好友表:字段如下uid fans_uid score返回:uid, fans_uid_list【fans_uid的拼接串,按照score降序拼接】给出数据源:每个uid,有很多对应的fans_uid,每个fans_uid 都对应一个score,我们需要按uid分组,将fans_uid 的score按降序排序,将fans_uid 放在一个列表中,做好友推荐create temporary table tb_user_fans as select

2021-10-26 11:44:53 16931 11

原创 一篇文章讲清楚数据仓库模型设计!

目录(1)为什么需要数据建模(2)最实用的建模方法论(3)维度建模的构建方式(3.1)星型模型(3.2)雪花模型(4)企业项目中数仓的实施流程(5)维度模型设计的4个决策(6)维度模型的规范化如何定义(7)维度模型的名词术语(1)为什么需要数据建模数据建模就是数据组织和存储的方式,它强调从业务、数据存取和使用角度合理存储数据。如上图所示,我们通过数据和程序对比来比较我们为什么需要数据建模:比如在我们平常写程序,在写程序之前要做程序设计,那么为什么需要程序设计,核心的原因有以下三点:出于性能的考

2021-10-24 19:27:13 1123

原创 数仓学习|几种常见的数据同步方式

目录前言(1)常见数据同步方式(1.1)直连同步(1.2)实时增量同步(日志解析)(2)流式数据集成实现前言数据仓库的特性之一是集成,即首先把未经过加工处理的、不同来源的、不同形式的数据同步到ODS层,一般情况下,这些ODS层数据包括日志数据和业务DB数据。对于业务DB数据而言(比如存储在MySQL中),将数据采集并导入到数仓中(通常是Hive或者MaxCompute)是非常重要的一个环节。那么,该如何将业务DB数据高效准确地同步到数仓中呢?一般企业会使用两种方案:直连同步实时增量同步(数据库

2021-10-13 21:40:11 3280

原创 Hive Distinct 的实现原理

Hive Distinct 的实现原理select dealid, count(distinct uid) num from order group by dealid;当只有一个distinct字段时,如果不考虑Map阶段的Hash GroupBy,只需要将GroupBy字段和Distinct字段组合为map输出key,利用mapreduce的排序,同时将GroupBy字段作 为reduce的key,在reduce阶段保存LastKey即可完成去重。如果有多个distinct字段呢,如下面的SQ

2021-10-13 21:10:27 726

原创 Hive之count(distinct xxx)优化写法

先看一道某互联网公司的面试题:题目描述计算每个首份的买家数的sq代码如下:select province ,count(distinct buyer_id)from orderswhere dt = '20211012'group by province假设 orders表很大,每天有5千万订单,这个代码会有哪些问题,应该如何处理或者改写代码?解答:这种写法逻辑上没问题,而它的底层引擎是mapreduce,是分布式计算的,但是在实际业务中如果数据量过大,相同重复的key过

2021-10-13 21:08:17 722

原创 数仓学习|初始数仓

(1)图解数仓架构先看图,图解数仓架构:从以下三个方面去了解数仓:Where:数据仓库的数据从哪里来How:对数据仓库的建设我们要做哪些事情What:数据仓库的应用场景以及它所发挥的作用(1)先看第一个部分操作系统,就是业务处理系统,OLTP产生的数据大概有三类:DB:业务数据(MySQL),比如下单、送货ClickData:点击流的数据(日志文件),比如用户的点击收藏数据OtherData:比如Tcp过来的数据、第三方接口过来的数据也就是说数据仓库的数据来源于上面三种数据类型

2021-10-13 18:01:18 414

原创 自然主键和代理主键的区别

关系数据库主要依靠主键区分不同的记录:主键又有自然主键代理主键自然主键:就是充当主键的字段本身具有一定的含义,是构成记录的组成部分,比如学生的学号,除了充当主键之外,同时也是学生记录的重要组成部分。代理主键:就是充当主键的字段本身不具有业务意义,只具有主键作用,比如自动增长的ID。以上内容仅供参考学习,如有侵权请联系我删除!如果这篇文章对您有帮助,左下角的大拇指就是对博主最大的鼓励。您的鼓励就是博主最大的动力!...

2021-10-11 16:37:42 710

原创 维度表和事实表的区别

简单解释:事实表就是交易表。维度表就是基础表。二者的区别:维度表的冗余很大,主要是因为维度一般不大(相对于事实表来说的),而维度表的冗余可以使事实表节省很多空间。事实表一般都很大,如果以普通方式查询的话,得到结果一般发的时间都不是我们可以接受的。所以它一般要进行一些特殊处理。如SQL Server 2005就会对事实表进行如预生成处理等。事实表一般是没有主键的,数据的质量完全由业务系统来把握。以上内容仅供参考学习,如有侵权请联系我删除!如果这篇文章对您有帮助,左下角的大拇指就是对博

2021-10-11 16:36:29 4606

原创 Word 批量转 PDF脚本

1.将需要转PDF的文档放一个文件夹里2.复制下面代码到文本中,另存为xxx.vbs 文件(注意:类型选为所有文件)3.放入word文件夹,双击运行On Error Resume Next Const wdExportFormatPDF = 17 Set oWord = WScript.CreateObject("Word.Application") Set fso = WScript.CreateObject("Scripting.Filesystemobject")

2021-08-28 17:45:03 2277 1

原创 计算机网络常见面试题汇总(建议收藏!!!)

目录(1)说说HTTP常用的状态码及其含义?(2)HTTP 常用的请求方式,区别和用途?(3)请简单说一下你了解的端口及对应的服务?(4)说下计算机网络体系结构?(5)如何理解HTTP协议是无状态的(6)从浏览器地址栏输入url到显示主页的过程(7)说下HTTP/1.0、1.1、2.0的区别(8)POST和GET有哪些区别?(9)在交互过程中如果数据传送完了,还不想断开连接怎么办,怎么维持?(10)HTTP 如何实现长连接?在什么时候会超时?(11)HTTP 与 HTTPS 的区别(12)Https流程是怎

2021-08-26 16:39:08 1609

原创 MySQL常见面试题汇总(建议收藏!!!)

目录一、索引相关(1)什么是索引?(2)索引是个什么样的数据结构呢?(3)为什么使用索引?(4)Innodb为什么要用自增id作为主键?(5)Hash 索引和 B+ 树索引有什么区别或者说优劣呢?(6)什么是聚簇索引(6)非聚簇索引一定会回表查询吗?(6)聚簇索引和非聚簇索引的区别(6)MyISAM和InnoDB实现B+树索引方式的区别是什么?(6)MySQL中有四种索引类型,可以简单说说吗?(6)覆盖索引是什么?(6)联合索引是什么?为什么需要注意联合索引中的顺序?(6)创建的索引有没有被使用到?或者说怎

2021-08-12 10:45:24 58191 9

原创 MySQL聚簇索引和非聚簇索引的区别

目录(1)聚簇索引(2)辅助索引(非聚簇索引)(3)InnoDB索引的实现(3.1)主键索引(3.2)InnoDB的辅助索引(4)MyISAM索引的实现(4.1)主键索引(4.2)辅助索引(Secondary key)(5)总结(1)聚簇索引聚簇索引就是按照每张表的 主键 构造一棵B+树,同时叶子节点中存放的就是整张表的行记录数据,也将聚集索引的叶子节点称为数据页。这个特性决定了索引组织表中数据也是索引的一部分,每张表只能拥有一个聚簇索引。在 InnoDB 中,只有主键索引是聚簇索引,如果没有主键,则

2021-08-08 23:05:09 2229

原创 Java数据结构线性表之链表

目录(1)链表(2)单向链表(2.1)单向链表API设计(2.2)单向链表代码实现(3)双向链表(3.1)结点API设计(3.2)双向链表API设计(3.3)双向链表代码实现(4)链表的复杂度分析(5)链表反转(6)快慢指针(6.1)中间值问题(6.2)单向链表是否有环问题(6.3)有环链表入口问题(7)循环链表(8)约瑟夫问题(1)链表链表是一种物理存储单元上非连续、非顺序的存储结构,其物理结构不能只管的表示数据元素的逻辑顺序,数据元 素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列的结点(

2021-08-07 20:09:20 409 1

原创 Day11-Java中String的equals方法如何实现

在我们面试的时候经常会看到== 与 equals()的区别,我们在网上背一些这种题目的答案:==:如果是基本数据类型的比较,是值的比较如果是引用类型的比较,⽐较的是两个引⽤是否指向相同的对象,也就是比较内存地址是否相同equals():equals 是比较内存地址上面的值是否相同往往我们还是需要从源码的角度分析一下Java中String的equals方法如何实现。首先我们都知道Java中所有的类都继承于Object这个类,在Object类中定义了一个equals的方法,equals的源

2021-07-25 21:46:58 528

原创 Day10-Java中HashMap几种遍历方式与性能分析

目录(1)HashMap遍历(2)性能分析(3)安全性分析(3.1)迭代器的方式进行删除(3.2)For Each的方式进行删除(3.3)Lambda 表达式的方式进行删除(3.4)Stream 的方式进行删除(4)总结先上结论:Java中HashMap有四种遍历方式,七种遍历方法使用迭代器(Iterator)EntrySet 的方式进行遍历性能最高,最安全(1)HashMap遍历接下来我们来看每种遍历方式的具体实现代码。package com.tset.three;import jav

2021-07-25 16:46:01 367

原创 Day9-Java线程中run方法和start方法的区别

先看代码:package cn.itcast.algorithm.demo.three;/** * @author :caizhengjie * @description : * @date :2021/7/23 18:51 */public class TestThread { public static void main(String[] args) { // 面试题:线程的run方法和start方法的区别 Runnable task = new

2021-07-23 20:25:04 248

原创 Day8-Java线程中join方法的使用

Java多线程中join的方法使用:package com.tset.two;/** * @author :caizhengjie * @description:TODO * @date :2021/7/22 10:18 下午 */public class TestThreadJoin { public static void main(String[] args) throws InterruptedException { Object lock = new Ob

2021-07-22 23:29:50 107

原创 Day1-TreeMap集合怎样保证有序性

TreeMap集合怎样保证有序性首先看一下TreeMap集合的使用,TreeMap集合也是键值对的,我们添加下面四个元素package com.tset.one;import java.util.TreeMap;/** * @author :caizhengjie * @description:TODO * @date :2021/7/21 10:48 下午 */public class TestTreeMap { public static void main(String[

2021-07-21 23:34:18 892 1

转载 数据仓库之建模方法论

目录

2021-07-18 21:59:24 1193

原创 数据仓库之命名规则

目录

2021-07-11 23:25:50 1789

原创 数据仓库之理论概述

目录(1)什么是数据仓库(2)数据仓库的特点(3)数据仓库发展历程(4)使用数据仓库有哪些优势?(5)数据库、数据仓库、数据湖的区别(6)数仓分层(6)(1)什么是数据仓库数据仓库,英文名称为DataWarehouse,可简写为DW或DWH。数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它出于分析性报告和决策支持目的而创建。为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。(2)数据仓库的特点1.数据仓库的数据是面向主题的与传统数据库面向应用进行

2021-07-08 22:16:58 512 1

原创 Hive中grouping sets与lateral view explode的用法

概述:GROUPING SETS函数通常用于OLAP中,不能累加,而且需要根据不同维度上钻和下钻的指标统计,比如,分小时、天、月的UV数。GROUPING SETS子句允许你指定多个GROUP BY选项。增强了GROUP BY的功能。可以通过一条SELECT语句实现复杂繁琐的多条SELECT语句的查询。并且更加的高效,解析存储一条SQL于语句在一个GROUP BY查询中,根据不同的维度组合进行聚合,等价于将不同维度的GROUP BY结果集进行UNION ALL关于grouping

2021-07-06 22:20:43 516 1

原创 Mac OS安装Kettle

目录(1)什么是Kettle?(2)Kettle下载安装(3)启动Kettle(4)Mac启动所遇到的问题(1)什么是Kettle?Kettle简介:Kettle 是 PDI 以前的名称,PDI 的全称是Pentaho Data Integeration,Kettle 本意是水壶的意思,表达了数据流的含义。Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,

2021-06-26 14:36:39 3203 2

转载 Java集合面试经典50问

目录(1)Arraylist与LinkedList区别(2)Collections.sort和Arrays.sort的实现原理(3)HashMap原理,java8做了什么改变(4)List 和 Set,Map 的区别(5)poll()方法和 remove()方法的区别?(6)HashMap,HashTable,ConcurrentHash的共同点和区别(7)写一段代码在遍历 ArrayList 时移除一个元素(8)Java中怎么打印数组?(9)TreeMap底层?(10)HashMap 的扩容过程(11)H

2021-05-22 22:39:58 10901 38

转载 Spark 内存管理详解

在执行Spark 的应用程序时,Spark 集群会启动 Driver 和 Executor 两种 JVM 进程,前者为主控进程,负责创建 Spark 上下文,提交 Spark 作业(Job),并将作业转化为计算任务(Task),在各个 Executor 进程间协调任务的调度,后者负责在工作节点上执行具体的计算任务,并将结果返回给 Driver,同时为需要持久化的 RDD 提供存储功能。由于 Driver 的内存管理相对来说较为简单,本节主要对 Executor 的内存管理进行分析,下文中的 Spark 内存

2021-05-20 15:13:45 314 1

原创 Spark Shuffle原理详解

目录(1)Shuffle概述(2)Hash Shuffle机制(2.1)Hash Shuffle概述(2.2)没有优化之前的Hash Shuffle机制(2.3)优化后的Hash Shuffle机制(3)Sort Shuffle机制(4)Spark Shuffle调优(1)Shuffle概述Shuffle 就是对数据进行重组,是把一组无规则的数据尽量转换成一组具有一定规则的数 据。由于分布式计算的特性和要求,在实现细节上更加繁琐和复杂。在 MapReduce 框架,Shuffle 是连接 Map 和

2021-05-18 18:32:35 1108

原创 Spark2.4.7源码解读RDD依赖关系

目录(1)概述(2)窄依赖(2.1)一对一依赖(2.2)范围依赖(3)宽依赖(1)概述Spark中RDD的高效与DAG(有向无环图)有很大的关系,在DAG调度中需要对计算的过程划分Stage,划分的依据就是RDD之间的依赖关系。RDD之间的依赖关系分为两种,宽依赖(ShuffleDependency)和窄依赖(NarrowDependency)依赖在 Apache Spark 源码中的对应实现是 Dependency 抽象类。/** * :: DeveloperApi :: * Base cla

2021-05-12 17:03:45 268

原创 Spark作业调度中stage的划分

目录(1)Spark作业调度(2)RDD依赖关系(3)Stage的划分(1)Spark作业调度(2)RDD依赖关系(3)Stage的划分

2021-05-11 13:38:56 2672

原创 浅谈Spark中Job-Stage-Task之间的关系

目录(1)Spark-Job-Stage-Task之间的关系(2)RDD-Partition-Records-Task之间的关系(1)Spark-Job-Stage-Task之间的关系在开始之前需要先了解Spark中Application,Job,Stage等基本概念,官方给出的解释如下表:TermMeaningApplication用户编写的Spark应用程序,包括一个Driver和多个executorsDriver Program运行main()函数并创建SparkC

2021-05-10 23:16:08 899

原创 大数据开发面试必会的SQL 30题!!!

目录(1)查询每个区域的用户数(2)查询每个区域的男女用户数(3)查询姓张的用户数(4)筛选出id3~id5的用户(5)筛选出绩效不达标的员工(6)筛选出姓张的且绩效不达标的员工(7)查询获得销售冠军超过两次的人(8)查询某部门一年的月销售额最高涨幅(9)查询每个季度绩效得分大于70分的员工(10)删除重复值(11)行列互换(12)多列比较(13)对成绩进行分组(14)周累计数据获取(15)周环比数据获取(16)查询获奖员工信息(17)计算用户留存情况(18)筛选最受欢迎的课程(19)筛选出每个年级最受欢迎

2021-05-02 23:22:19 8035 20

原创 一键启动HBase脚本编写

一键启动HBase脚本所解决的问题:解决一台一台启动zookeeper繁琐问题解决因时间不同步导致HBase启动失败的问题脚本编写hbase-start.sh:# !/bin/bashhbase_master=bigdata-pro-m07cat /opt/modules/hbase/onekey/slave | while read linedo{ echo $line + "同步时间" ssh $line ntpdate cn.pool.ntp.org ssh $line

2021-04-29 16:10:43 444

原创 Hive思维导图总结!

一张图搞定Hive知识点以上内容仅供参考学习,如有侵权请联系我删除!如果这篇文章对您有帮助,左下角的大拇指就是对博主最大的鼓励。您的鼓励就是博主最大的动力!

2021-04-28 22:28:06 768

原创 MySQL之子查询

目录(1)子查询的分类(1.1)select子查询(1.2)from子查询(1.3)where子查询(2)with建立临时表开发工具:mysql-8.0DataGrip数据源:chapter13_user.csvid,name,sex,classE001,李明,男,一班E002,张华,男,一班E003,薛娟,女,二班数据源:chapter13_score.csvid,score,month_numE001,687,1月E002,667,1月E003,686,1月E001,6

2021-04-27 22:26:04 526

原创 Hadoop思维导图总结!

一张图搞定Hadoop面试点以上内容仅供参考学习,如有侵权请联系我删除!如果这篇文章对您有帮助,左下角的大拇指就是对博主最大的鼓励。您的鼓励就是博主最大的动力!

2021-04-26 22:01:56 940 1

原创 MySQL之多表连接

目录(1)表的横向连接(1.1)表连接的方式(1.1.1)left join(1.1.2)right join(1.1.3)inner join(1.1.4)outer join(1.2)表连接的类型(1.2.1)一对一(1.2.2)一对多(1.2.3)多对多(1.3)多张表连接(2)表的纵向连接(3)横向连接的底层原理(3.1)Simple Nested-Loop Join(简单的嵌套循环联接)(3.2)Index Nested-Loop Join(索引嵌套循环联接)(3.3)Block Nested-L

2021-04-26 13:18:53 3068

原创 数据分析面试题之分组求Top N值

在上次的面试过程中,遇到了一个数据分析的经典面试题,题目大概的是这样的:求出每个店铺销量为第二的销量数和日期值本题解析:本题主要考察我们分组求第N值的方法,通过运用mysql8中的窗口函数的row_number()函数,按照shopname分组,按照sales降序排序,得到出每个分组中的行号,然后通过子查询让rank_num = 2,即可求出每个店铺销量为第二的销量数和日期值。代码演示:-- 练习:求出每个店铺销量为第二的销量数和日期值(方法一)select shopname, s

2021-04-24 16:28:56 373

hbase-1.2.0-cdh5.9.3.tar.gz

hbase-1.2.0-cdh5.9.3.tar.gz

2021-04-13

snappy-1.1.3.tar

snappy压缩包

2021-04-13

hive-0.13.1-cdh5.3.9.tar.gz

Hive CDH版本

2021-04-09

zookeeper-3.4.5-cdh5.9.3.tar.gz

Zookeeper CDH版本

2021-04-09

hbase-1.2.0-cdh5.9.3.tar.gz

HBase CDH版本

2021-04-09

hadoop-2.6.0-cdh5.9.3.tar.gz

Hadoop CDH版本

2021-04-09

Python面试题!

2022-04-26

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

TA关注的人

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