自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Hive中like与rlike的区别

Hive 中可以用 like 和 rlike 进行模糊匹配,like 采用的是 SQL 通配符,而 rlike 采用的是正则匹配。like% 代替 0 或多个字符_ 代替一个字符举个例子:-- 返回值为 TRUEselect 'aaa' like '%a%'-- 返回值为 TRUEselect 'aaa' like '_a_'rlikerlike 采用正则表达式,以下总结几个常用的****: 转义用,序列 \\ 匹配 \^: 匹配输入字符串开始的位

2021-09-07 23:45:50 9980

原创 Hadoop纠删码(Erasure Coding)简介

三副本机制1、什么是三副本默认情况下,HDFS会使用三副本机制来保证数据可用性,第一个副本存放在本地机架节点上,另一个副本存放在同一机架的另一个节点上,第三个副本存放在在不同机架的节点上。三副本机制可以减少机架间的数据传输,提高写操作的效率,保证数据的可用性,因为机架错误的概率要小于节点出错的概率2、三副本带来的问题三副本会造成存储空间200%的额外开销,还会在其他资源上造成浪费,比如在写数据时会造成额外的带宽消耗。尤其对于冷数据,因为查询的频率很低,第二个和第三个副本很少被访问,却依然占用了同样大

2021-08-17 21:35:05 2341 2

原创 Hive宏(Macro)简介

最近在开发中用到了宏,用起来的确很方便,大大简化了代码,提高了可读性和可维护性,在此记录下宏的用法,以后有机会多更新一些宏的复杂用法。什么是 Macro在进行 Hive SQL 开发的时候,有一些逻辑需要反复使用,如果代码中每次都把所需逻辑复制粘贴一遍,不仅会造成代码冗余,还会增加维护难度,这时使用 Hive宏 对逻辑进行提炼,可以起到简化代码,提高开发效率,提升程序可读性的效果。如何使用 Macro宏的使用主要分为:创建、使用、销毁这三步,其中最重要的是创建部分,定义好后可以将宏像函数一样使用,最

2021-08-10 15:32:35 628

原创 数据治理过程中的几种优化手段

当企业数仓发展到一定规模后,就会出现模型迭代速度远慢于业务发展速度的现象,为了满足业务需要,DE 往往会面向需求进行快速开发,由此造成了烟囱表、数据安全、计算冗余、存储浪费等各种各样的问题。为了解决这些问题,保持离线数仓长期向好的健康状态,需要开展数据治理工作。但在多数公司中,开展数据治理的原因往往是为了节约成本,减少计算开销和存储开销。。。下面总结一些可以优化计算和存储开销的常见方法。1. 删除 TOPk 存储的无下游,且近 N 天无更新的 ODS 表业务风险高,数据不可恢复,需要跟业务确认2.

2021-08-09 17:22:55 478

原创 将DB数据同步到数据仓库中的两种方法(简介)

在数据仓库中,ODS 层数据一般来源于客户端的日志和业务数据库中的数据,对于 MYSQL 等关系型数据库,我们需要将库中数据同步到 Hive 中进行查询与分析。这里简单介绍两种同步的方法。低性能同步法直连 MySQL 并 select 表中数据将 select 的结果存储到本地作为中间存储将中间存储的文件 load 进 Hive 表中这种方法实现起来比较简单,但也有较大的缺陷,主要有以下几点:随着业务规模不断扩大,每次 select 得到的数据量不断加大,将结果存本地再 load 进 H

2021-08-02 12:03:15 826

原创 数据仓库工具箱笔记 - 第一章

第一章为什么使用维度建模不使用ER模型规范化的模型主要用于操作型过程中,因为对事物的更新和插入仅触及数据库单一的地方。对BI查询来说,规范化的模型太复杂,用户难以理解和检索,复杂查询时将耗尽数据库的优化器性能,严重影响查询的性能,不能高性能检索。度建模的核心原则建立事实表时使用统一的细节级别(粒度),可以避免出现重复计算度量的问题。(事实表中每一行对应一个度量事件)文本数据应尽量放在维表中,尽量不冗余到事实表。总线矩阵存在的意义多数情况下,用户获得有限的数据源,并用于解决特定的问题,输出

2021-06-28 19:14:39 140

原创 使用VuePress搭建一个简洁的技术文档

长期搬砖难免遇到各种各样的问题,新人入职后也需要一份完整、清晰的文档指导其展开工作,而Hexo更适合做个人博客,因此这里选用 VuePress 来构建。1、安装Node.jsNode.js安装教程此处不再赘述。2、创建并进入目录mkdir vuepress-starter && cd vuepress-starter3、初始化npm init4、安装依赖npm install -D vuepress5、创建文档mkdir docs && echo

2021-05-17 17:31:59 379

原创 mac下Homebrew安装Fetching /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask failed报错解决方法

在安装 Homebrew 时发现了如下报错Error: Fetching /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask failed!fatal: Could not resolve HEAD to a revisionFailed during: /usr/local/bin/brew update --force --quiet尝试了一些方法都没解决,最后采用如下方法完美解决。1、卸载之前安装的 Homebrew/usr/b

2021-04-26 21:57:27 9206 7

原创 字节抖音大数据开发校招面经总结

翻了一些牛客上的字节面经,对常见面试题做了下总结~Spark部分1、Spark中Stage、Executor、Task都是干嘛的?2、Spark 数据倾斜3、spark为什么比mr快?4、Spark的stage的划分是怎么划分的?5、介绍一下 Spark RDD、DataFrame、DataSet6、Spark的窄依赖和宽依赖7、DAG Scheduler作用8、Spark中有哪些算子会进行shuffle,有哪些不会进行shuffle9、union可以形成宽依赖吗?10、Spark 作业调度11、Spark

2020-11-04 17:10:21 2353 3

原创 Hive中的Sort Merge Bucket Join

最近学习时发现 Hive 中还有一种 SMB Join,即 Sort Merge Bucket Join ,赶紧找资料学习了一波。。map join我们知道在 Hive 中当小表 join 大表时可以通过 map join 将小表中的数据读入内存,在 map 端 join 大表,从而省略 reduce 过程,大大加快连接的速度,但是当小表数据量过大内存放不下时就无法使用 map join 了,由此引出了 Sort Merge Bucket Join。SMB join要使用 SMB Join,所有的表

2020-11-02 23:05:57 984

原创 大数据岗位校招Hadoop面试总结

继上一篇Spark相关的面试问题,本篇总结一下Hadoop相关的面试问题,由于Hadoop相关的问题大多涉及到原理及运行流程,内容较多较复杂,因此本篇以罗列问题为主,详细答案参考各种工具书和大佬们的博客~HDFS 默认的副本数?如果想修改副本数怎么修改HDFS 的文件结构租约管理第一关系管理及第二关系管理NameNode中的集中式缓存管理HDFS 写文件如何保证正确性及零拷贝模式HDFS读取、写入过程checkpoint流程HDFS的各节点之间如何通信MapReduce过程MapReduce1工作机制、比较

2020-11-01 19:58:35 719 1

原创 大数据岗位校招Spark面试总结

这里写目录标题1、Spark基本概念2、Spark运行架构特点3、Spark运行流程4、Spark on yarn—cilent 和 on yarn—cluster 的区别5、Spark 怎样划分stage和task6、stage的调度与task的调度7、静态资源申请与动态资源申请8、Spark内存管理机制9、Spark standalone模型10、Spark开发调优11、Spark数据倾斜及调优12、Spark里面有哪些参数可以设置,有什么用13、Spark shuffle参数调优14、Spark 持

2020-11-01 14:20:32 444

原创 大数据岗位校招Hive面试总结

秋招结束,拿到了比较满意的大厂offer,在这里把复习时刷过的面经以及面试时遇到的问题总结一下~1、Hive的SQL语句如何转换为MR任务?2、Hive中有哪些文件类型3、几种join的区别4、order by和sort by的区别5、drop delete turncate区别6、where和having有什么区别7、select、from、where、group by、order by在一个Hive语句中,这些执行的顺序8、join的表中筛选和where中筛选有什么区别9、分区和分桶具体怎么实现的10、

2020-10-30 21:26:04 714 1

原创 Windows下搭建大数据开发环境ERROR Shell: Failed to locate the winutils binary in the hadoop binary path解决方法

在 https://github.com/steveloughran/winutils 找到自己对应的 Hadoop 版本,下载解压在用户变量中添加 HADOOP_HOME ,值为解压的路径配置系统变量中的 Path ,添加 $HADOOP_HOME\bin需要重启 IDEA ,即可正常运行。...

2020-04-29 11:29:34 338

原创 Hadoop archive归档命令的使用

archive 命令有什么用archive 可以用来解决 Hadoop 中的小文件问题,当存在大量小文件时,会产生如下影响:HDFS 中,小文件过多会占用大量内存,NameNode 内存容量最终会成为限制集群扩展的瓶颈。HDFS 读写小文件更加耗时,因为每次都需要从 NameNode 获取元信息,并与对应的 DataNode 建立连接。小文件过多会开很多 map,一个 map 启动一个 ...

2020-04-28 17:28:02 550

原创 git commit 时提示please tell me who you are解决方法

先是按照git的提示git config --global user.email “you@example.com”git config --global user.name “Your Name”进行设置,结果发现还是报错,最后找到解决方案如下:git initgit config user.name “Your Name”git config user.email “you@exa...

2020-04-27 11:40:09 699

转载 详解TCP/IP协议栈

之前对网络各层作用的了解一直都比较模糊,对各个协议的作用也不甚清楚,最近看到了一篇对TCP/IP协议栈讲解比较清晰的博文,特地转载过来。什么是TCP/IP协议栈TCP/IP 协议栈是一系列网络协议的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输。TCP/IP 协议采用4层结构,分别是应用层、传输层、网络层和链路层,每一层都呼叫它的下一层所提供的协...

2020-04-04 21:04:38 340

原创 Hive中的Skew Join

看文档的时候突然发现Skew Join,之前只知道有内外连接,半开连接,全外连接,笛卡尔积,于是赶紧学习了下Skew Join,在这里做个总结。首先简单介绍下什么是数据倾斜比如我们有10000条数据,有10个reducer来处理数据,在这10000条数据中有9000条的key是相同的,这样经过hash之后,就会出现有一个reducer要自己处理9000条数据,而剩下的9个reducer可能每个...

2020-03-29 23:04:02 2826 2

原创 Spark算子之foldByKey

在学习foldByKey这个算子的时候,发现网上好多文章的内容相互冲突,于是决定自己实践一边,以理解这个算子是怎么运行的。foldByKeydef foldByKey(zeroValue: V, numPartitions: Int)(func: (V, V) => V): RDD[(K, V)] = self.withScope { foldByKey(zeroValue, n...

2020-02-22 16:46:21 340

原创 Scala与Java的区别

两种不同的语言,两种不同的编程思想,真比起来的话肯定需要一大片长文来写,自己也没这个水平。。在此简单的罗列一些基本的差别。Scala不需要分号结尾Scala函数式编程语言,在scala世界里,函数才是一等公民;函数可以作为参数进行传递,可以赋值给变量,可以作为返回值进行返回Scala类型定义开头需大写Scala函数定义需 def 开头,Scala函数没有返回值用Unit,相当于java的...

2020-02-20 11:33:24 435

原创 JVM内存结构及Java垃圾收集(GC算法、GC收集器)

最近正在复习Java相关的知识,总结一下JVM相关的知识点。JVM内存结构先上图堆内存(线程间共享)在虚拟机启动时创建,此内存区域的唯一目的就是存放对象实例,是垃圾收集器管理的主要区域(也叫GC堆),Java堆可以处于物理上不连续的内存空间中,只要逻辑上是连续的即可,如果在堆中没有内存完成实例分配,并且堆也无法再扩展时(通过-Xmx和-Xms控制扩展),将会抛出OutOfMemoryEr...

2020-02-19 12:09:14 239

转载 Hadoop NameNode 高可用 (High Availability) 实现解析

NameNode 高可用整体架构概述在 Hadoop 1.0 时代,Hadoop 的两大核心组件 HDFS NameNode 和 JobTracker 都存在着单点问题,这其中以 NameNode 的单点问题尤为严重。因为 NameNode 保存了整个 HDFS 的元数据信息,一旦 NameNode 挂掉,整个 HDFS 就无法访问,同时 Hadoop 生态系统中依赖于 HDFS 的各个组件,包...

2020-02-09 11:49:43 241

原创 数据仓库之如何分层

1.前言数据仓库的建设是一个持续的工程。在这个过程中我们需要形成自己的规范,以方便管理和维护。在数据仓库的建设过程中,不仅会面临着公司业务迅速发展,业务系统迭代变更,需要对业务系统数据进行相应的整合,形成公司完整的统一数据视图;而且基于数据仓库的应用也是多样化的,比如支撑自己企业的数据可视化平台、即席查询、对策略提供数据支持等。参考目前已有的分层模型,结合自身实际数据情况,确定对数据仓库进行层次...

2020-01-07 14:50:26 1364

原创 Spark入门之基础知识(三)键值对操作

键值对RDD在实际生产中很常用,通常用来进行聚合计算,并且Spark对键值对RDD也提供了新的操作接口可以做更多操作,本文简单介绍一些键值对RDD的基础操作。如何创建Pair RDD1)键值对格式的数据可以直接读入,返回Pair RDD2)使用map()把一个普通的RDD转化为Pair RDD读取text文件,取每行文本的第一个单词做key,该行文本做valueval lines = c...

2019-12-19 18:15:53 379

转载 大数据框架中的小文件问题

转载自http://xcx1024.com/ArtInfo/997661.htmlHadoop里面的小文件问题小文件指的是那些size比HDFS的block size(默认64M)小的多的文件。如果在HDFS中存储小文件,那么在HDFS中肯定会含有许许多多这样的小文件(不然就不会用hadoop了)。而HDFS的问题在于无法很有效的处理大量小文件。任何一个文件,目录和block,在HDFS中都...

2019-12-19 14:34:10 440

原创 Hive入门之基础知识(四)之文件格式和压缩方法

为什么使用压缩使用压缩可以减小所需的磁盘空间,减小磁盘和网络的IO操作,减小了载入内存的数据量提高了IO吞吐量,提升了网络性能(因为MapReduce大多是文件读写操作,属于IO密集型)。...

2019-12-19 09:24:53 360

原创 Hive入门之基础知识(三)之分区与优化的简单介绍

为什么要对数据进行分区在实际生产中,每天的数据量都是以亿为单位的,如果我们不对数据进行分区,直接对全部数据进行统计,则会大大增加时间开销,浪费大量资源。当我们做了合理分区后,例如按天进行分区,当查找某一天的数据时,Hive不会读取全部文件,只会读取HDFS中该天对应的目录,大大提高了执行效率。分区是不是越多越好多数情况下,对数据可以按天进行分区,如果数据量还是太大,可以考虑再按小时进行分区,...

2019-12-18 23:35:45 464

原创 Hive入门之基础知识(二)之数据操作与查询

向Hive表中装载数据Hive不会验证向表中装载的数据和表的模式是否匹配(需要自己检查确认),但是会检查文件的格式是否和表结构定义的一致(创建表时指定的结构若为SEQUENCEFILE,则装载进去的文件也应该为sequencefile格式)。从本地文件系统向表中装载数据LOAD DATA LOCAL INPATH 'path' INTO TABLE 'table' 从本地文件系统向表中...

2019-12-17 21:41:04 266

原创 Spark入门之基础知识(二)RDD编程

什么是RDD弹性分布式数据集RDD是Spark的核心抽象。RDD其实就是分布式的元素集合,Spark中的操作创建、转化、或对RDD进行求值,Spark会自动将RDD的数据分发到集群上并并行执行。RDD是一个不可变的分布式对象集合,每个RDD都被分为多个分区,这些分区在集群中不同的节点上运行。”弹性“的解读:弹性意味着在任何时候都能进行重算,当某一部分数据丢失时,可以根据血缘关系将丢失的部分计...

2019-12-17 17:03:08 305

原创 Spark入门之基础知识(一)

什么是SparkSpark 是一个用来实现快速而通用的集群计算的平台。Spark的核心Spark 的核心是一个对由很多计算任务组成的、运行在多个工作机器或者一个计算集群上的应用 进行调度、分发、监控的计算引擎。Spark软件栈设计的优点1)软件栈中所有程序库和高级组件都可以从下层的改进中受益。2)运行整个软件栈的代价变小了。3)可以构建出无缝整合处理不同模型的应用。Spark 的...

2019-12-17 17:02:27 138

原创 Hive入门之基础知识(一)之杂七杂八

hive出现的原因:从一个基于传统关系型数据库和结构化查询语言的数据基础架构转移到Hadoop上,使用HQL查询Hadoop中的数据。hive不支持记录级别的更新、插入和删除操作。执行延迟大,不支持事务。hive组成模块:所有的命令和查询都会进入到驱动模块driver中,driver对输入进行解析和编译,以及对需求的计算进行优化,然后启动MR来执行job。hive本身不会生成MR的程序,而...

2019-12-16 17:48:45 163

原创 catalog和schema的区别

直接上图,直观一点:什么是catalog从概念上说,一个catalog包含多个schema,一个schema下可以包含多个数据库对象(表,视图,字段),catalog可以理解为数据库实例的元数据集合。常用数据库对catalog和schema的支持如下:什么是schema一般来说,schema是指数据库表的组织和定义,定义了表、字段以及表和字段间的关系。可以理解为表的命名空间。推荐下...

2019-12-10 15:06:26 1644

原创 基于Geohash实现根据经纬度的快速定位

背景介绍在项目中,SDK会上报包含用户经纬度信息的一系列数据,我们需要根据经纬度信息定位出此条数据上报时用户所在的位置,并和其他信息写入宽表中。什么是Geohash如何用Geohash实现快速定位示例代码...

2019-12-09 11:39:31 1768 1

空空如也

空空如也

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

TA关注的人

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