自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

肖肖的博客

大数据,数据仓库

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

原创 数据倾斜、数据漂移及hiveSQL优化

假如要从一张stg层表中将json字符串解析成对相应的字符串,假设有10个字段,那么get_json_object()方法相当于一条记录使用 10 次函数,而 json_tuple()方法只是使用了一次,进行了批量解析,这种方式明显更高(脑补下 JVM 的知识点)。针对以上方案,如果既需要满足本需求,又有利于数仓建设的话,推荐方案一,如果是敏捷开发,满足此需求的话推荐方案三,对于数据集市建设,如果没必要细致到用户到城市维度的话,建议方案二,三种方案各有利弊,具体选择需要根据实际情况定夺。

2023-02-23 20:33:10 1363 2

原创 大数据算法

有10个⽂件,每个⽂件1G,每个⽂件的每⼀⾏存放的都是⽤户的 query,每个⽂件的 query 都可能重复。要求你按照 query 的频度排序。方法1:顺序读取10个⽂件,按照 hash(query)%10 的结果将 query 写⼊到另外 10 个⽂件(记为)中。这样新⽣成的⽂件每个的⼤⼩⼤约也 1G(假设 hash 函数是随机的)。找⼀台内存在 2G 左右的机器,依次对⽤hash_map(query, query_count)来统计每个 query 出现的次数。

2023-02-22 20:13:44 462

原创 数据仓库建模设计

ODS层的设计要点如下:(1)ODS层的表结构设计依托于从业务系统同步过来的数据结构。(2)ODS层要保存全部历史数据,故其压缩格式应选择压缩比较高的,此处选择gzip。(3)ODS层表名的命名规范为:ods_表名_单分区增量全量标识(inc/full)。DIM层设计要点:(1)DIM层的设计依据是维度建模理论,该层存储维度模型的维度表。(2)DIM层的数据存储格式为orc列式存储+snappy压缩。(3)DIM层表名的命名规范为dim_表名_全量表或者拉链表标识(full/zip)DWD层

2022-12-04 17:26:20 700

原创 kafka快速入门

查看主题命令参数2)查看当前服务器中的所有topic3)创建first topic选项说明:–topic 定义topic名–replication-factor 定义副本数–partitions 定义分区数4)查看主题的详情5)修改分区数(注意:分区数只能增加,不能减少)6)再次查看first主题的详情7)删除topic。

2022-11-13 12:19:37 252

原创 flume入门到到放弃

flume是一个分布式的数据采集器,Flume最主要的作用就是,实时读取服务器本地磁盘的数据,将数据写入到HDFS。

2022-10-25 23:35:33 447

原创 数据仓库简介

数据仓库不是数据最终目的地,而是为数据最终目输出做好准备,包括对数据操作备份,清洗,聚合,统计等数仓的分层ods:备份dwd:清洗dws:预聚合ads:统计用户画像:给用户打标签。

2022-10-23 19:16:13 472

原创 kafka的零拷贝

传统的数据文件拷贝过程如下图所示,大概可以分成四个过程:磁盘----》read buffer-----》application buffer-------》socket buffer---------》网卡-------》发送给消费者。

2022-09-08 15:38:26 5015

原创 elasticsearch的基本操作

price_group”:{ # 名称,随便起的。“type”:“keyword”, #全量匹配。“match_phrase”:{ #完全匹配。“field”:“price” # 分组字段。“category”:“小米手机”,“type”:“text”,#单匹配。“filter”:{ # 条件查询。“category”:“小米”,“category”: “小米”“title”:“小米手机”,“title”:“小米手机”,“category”:“小米”“category”:“小米”

2022-08-24 09:11:25 226

原创 Flink部署

Flink 中的几个关键组件:客户端(Client)、作业管理器(JobManager)和任 务 管 理 器 ( TaskManager)。我 们 的 代 码 , 实 际 上 是 由 客 户 端 获 取 并 做 转 换 , 之 后 提 交 给JobManger 的。所以 JobManager 就是 Flink 集群里的“管事人”,对作业进行中央调度管理;而它获取到要执行的作业后,会进一步处理转换,然后分发任务给众多的 TaskManager。

2022-08-20 21:47:32 723

原创 Flink 入门

flink是一个分布式处理引擎,可以在无边界和有边界数据流上进行有状态的计算。Flink 能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。

2022-08-19 16:12:03 467

原创 数仓建模理论之实体和维度建模

1、ER实体关系模型ER实体关系模型:是当前几乎所有的 OLTP 系统设数据库设计理论基础,当在信息系统中将事物抽象为“实体”,”属性“,”关系“来表示数据关联和事物描述。实体:实体是一个数据对象,指应用中可以区别的客观存在的事物。例如:商品、用户、学生、课程等属性:实体的某一特性称为属性。例如:商品的重量、颜色、尺寸。用户的性别、身高、爱好等。关系:表示一个或多个实体之间的关联关系。实体不是孤立的,实体之间是有联系的,这就是关系。例如:用户是实体,商品是实体,用户选购商品这个过程就会产生“选购商品

2022-03-13 11:01:32 4758

原创 Spark分布式计算框架之SparkStreaming+kafka

1、SparkStreaming的介绍SparkStreaming 是流式处理框架,是 Spark API 的扩展,支持可扩展、高吞吐量、容错的实时数据流处理,实时数据的来源可以是:Kafka, Flume,Twitter, ZeroMQ 或者 TCP sockets,并且可以使用高级功能的复杂算子来处理流数据。2、MR&Storm&Spark&flink的区别MR:针对数据进行处理,没封装高级的算子,自己实现逻辑,没有SQL的流式处理。Storm:针对实时数据进行处理,是一

2022-03-12 21:47:15 3067

原创 Spark之SparkSQL

1、SparkSQL介绍Hive是shark的前身,Shark是SparkSQL的前身,SparkSQL产生的根本原因是为了完全脱离Hive的限制。2、SparkSQL 创建 DataFrame 的方式在使用SparkSQL时Scala2.0+的版本创建的方式val session: SparkSession = SparkSession.builder().appName(“test”).enableHiveSupport().getOrCreate()session.sparkCont

2022-02-26 19:12:43 1211

原创 Spark基础

1、什么是Sparkspark是专门为大数据处理而设计的计算引擎。2、Spark和MR的区别都是分布式计算框架,Spark是基于内存,MR基于HDFS。Spark处理数据的速度是MR的十倍以上,Spark处理基于内初计算外,还有DAC有向无环图来切分任务的执行先后顺序。3、Spark的运行模式Local:多用于本地测试Standalone:自带的资源调度框架。yarn:Mesos注意:要用yarn来进行资源调度器,要实现AppalicationMaster 接口,Spark 实现 了这个接

2022-02-13 16:36:25 840

原创 为centOS7配置新的阿里云yum源

当我们的yum源无法访问国外,我们配置国内的阿里云的yum源修改本地的yum源curl http://mirrors.aliyun.com/repo/Centos-7.repo >/etc/yum.repos.d/CentOS-Base.repo在输入以下命令yum clean allyum makecache

2021-12-27 11:41:21 409

原创 hbase 读写流程

大合并 (major ) 和小合并 (minor ) :minor 合并负责重写最后生成的几个文件到一个更大的文件中。文件数量是由hbase.hstore.compaction.min 属性设置的。它的默认值为 3,并且最小值需要大于或等于 2。过大的数字将会延迟 minor 合并的执行,同时也会增加执行时消耗的资源及执行的时间 。major 合并:它们把所有文件压缩成一个单独的文件。默认情况下,major 合并间隔是7 天,看情况随机的加上或减去 4.8 小时。如果要删除数据,不会直接修改 store

2021-09-27 17:07:04 155

原创 hbase 数据模型进阶

rowkey cf1:q2 获取最新数据rowkey , CF1, q2, t2 四维数据库,获取指定列族指定列指定时间戳的数据rowkey 列族 列名 时间戳 四个纬度row key决定一行数据按照字典顺序排序的。Row key 只能存储 64k 的字节数据(UTF-8 编码格式下 2.133w 多个汉字)Column Family 列族 & qualifier 列HBase 表中的每个列都归属于某个列族,列族必须作为表模式(schema)定义的一部分预先给出。 crea.

2021-09-27 16:45:47 122

原创 HBASE搭建

HBASE的搭建搭建方式:独立模式、伪分布式、完全分布式实际上,您需要完全分布式配置才能完全测试 HBase 并在实际场景中使用它。在分布式配置中,群集包含多个节点,每个节点运行一个或多个 HBase 守护程序。其中包括主要和备用 Master,多个 Zookeeper 节点和多个 RegionServer 节点。1、配置四台主机免密钥2、将 hbase 解压到 node1 的/opt3、在/etc/profile 中配置 HBASE_HOME,并将 HBase 的 bin 目录添加到 PA

2021-09-27 16:13:24 362

原创 HBASE的架构

1、如何看架构图1、看架构图中有哪些角色2、HBASE架构目录表 hbase:meta目录表 hbase:meta 作为 HBase 表存在,并从 hbase shell 的 list(类似 show tables)命令中过滤掉,但实际上是一个表,就像任何其他表一样。hbase:meta 表(以前称为.META.),保有系统中所有 region 的列表。hbase:meta位置信息存储在 zookeeper 中。hbase:meta 表是所有查询的入口表结构如下:key: region

2021-09-27 11:13:01 96

原创 HBASE的描述

1、HBASE的介绍Apache HBase™是 Hadoop 数据库,是一个分布式、可伸缩、大数据存储区。当您需要随机、实时读/写访问大数据时,请使用 Apache HBase™。 该项目的目标是在商用硬件集群之上托管非常大的表----数十亿行X百万列。Apache HBase是一个开源的、分布式的、版本化的、非关系的数据库,它参考了 Google 的Bigtable。 正如 Bigtable 利用 Google 文件系统提供的分布式数据存储一样,Apache HBase 在 Hadoop 和 HDFS

2021-09-27 10:26:12 495

原创 DDL操作表

前提先使用某个数据库DDL:数据定义语言用来定义数据库对象:数据库,表,列等,关键字create,drop,alter等1、创建数据库直接创建create database 数据库名;判断是否存在并创建数据库create database if not exist 数据库名创建数据库并指定字符集create database 数据库名 character set 字符集2、 创建表语法:CREATE TABLE 表名 (字段名1 字段类型1, 字段名2 字段类型2…);关键字说明:

2021-09-22 10:21:01 354

原创 分布式集群

1、准备四台虚拟机用户名分别为node1,node2,node3,node4输入命令cd /etc/sysconfig/network-scripts/修改vim vim ifcfg-eth0,为了让IP不同设置为静态如下图:2、实现四台虚拟机免密登录(1)首先在四台服务器上都要执行:ssh-keygen -t dsa -P ‘’ -f ~/.ssh/id_dsa(2)在 node1 上将 node1 的公钥拷贝到 authorized_keys 中:id_dsa.pub :公钥kno

2021-08-30 09:36:09 124

原创 通过keepalived+nginx实现高可用的主备切换

keepalived+nginx双机热备1 配置VIP2 安装keepalived3 配置keepalived4 测试服务器准备192.168.230.105(主)192.168.230.106(从)VIP:127.0.0.0要配置系统文件网络文件vi /etc/sysconfig/network-scripts/ifcfg-eth0:0E=eth0:0TYPE=EthernetONBOOT=yesBOOTPROTO=staticDNS1=192.168.230.2IPAD

2021-08-23 17:04:24 462

原创 实现Nginx和两个Tomcat的赋值集群

1、Nginx的工作模型1.1、master-worker模式1、Nginx 在启动后,会有一个 master 进程和多个相互独立的 worker 进程。2、Master 接收来自外界的信号,向各 worker 进程发送信号,每个进程都有可能来处理这个连接。3、Master 进程能监控 Worker 进程的运行状态,当 worker 进程退出后(异常情况下),会自动启动新的 worker 进程。1.2、nginx 虚拟主机演示虚拟主机,就是将一台物理服务器虚拟为多个服务器来使用,从而实现在一

2021-08-23 16:26:48 95

原创 Linux文件属性与权限

1、Linux的文件属性当我们先用ls -al查看文件这三个参数的出现顺序不会改变,若没有某个权限,则会以[-]代替。这三组参数中,第一组是文件所有者的权限;第二组是同用户组的权限;第三组是其他用户的权限。这三组权限均是针对某些账号而言的权限。另外,文件权限和目录权限意义不同,这是因为文件与目录记录的数据内容不相同。2、每个字符代表这个文件的具体类型:任何设备在 Linux 下都是文件,不仅如此,连数据库的接口也有专门的文件负责。若是[d]则是目录(directory)若是[-]则是文

2021-08-12 22:20:12 200

原创 Linux下的文件解压和打包

1、常见文件扩展名:*.tar.gz tar程序打包文件,并且通过gzip的压缩*.tar.bz2 tar 程序打包的文件,并且经过 bzip2 的压缩2、选项和参数-c :建立打包文件,-t :查看打包文件的内容含有哪些文件-x :解打包或解压缩的功能,可以搭配-C(大写)在特定到特定目录解开-j :通过 bzip2 的支持进行压缩/解压缩:此时文件最好为 *.tar.bz2-z :通过 gzip 的支持进行压缩/解压缩:此时文件最好为 *.tar.gz-v :在压缩/解压缩的过程中,将

2021-08-11 15:22:16 145

转载 java集合框架

1、集合的概念java中的集合类:是一种工具类,就像是容器,储存任意数量的具有共同属性的对象。2、集合的作用在内部对数据进行组织;简单而快速的搜索大数量的条目;有的集合接口,提供了一系类排队有序的元素,并且可以在序列中间快速的插入或者删除有关系元素有的集合接口,提供了映射关系,可以通过关键字(key)去快速查找到对应的唯一对象,二这个关键字可以是任意类型3、java的集合框架体系结构Java语言中集合框架的顶层是:Collection集合 和 Map集合。其中Collection集合操作元

2021-08-06 22:33:23 98

转载 java中的包装类

1、包装类相信各位小伙伴们对基本数据类型都非常熟悉,例如 int、float、double、boolean、char 等。基本数据类型是不具备对象的特性的,比如基本类型不能调用方法、功能简单。。。,为了让基本数据类型也具备对象的特性, Java 为每个基本数据类型都提供了一个包装类,这样我们就可以像操作对象那样来操作基本数据类型。基本类型和包装类之间的对应关系:包装类主要提供了两大类方法:将本类型和其他基本类型进行转换的方法将字符串和本类型及包装类互相转换的方法Integer包方法

2021-08-06 17:14:27 4219

原创 java中的字符串

1、什么是java中的字符串在程序开发中字符串无处不在,如用户登陆时输入的用户名、密码等使用的就是字符串。其实,在前面的章节中我们就已经使用了字符串,例如我们在控制台中输出的 “Hello World” 、 “imooc” 。在 Java 中,字符串被作为 String 类型的对象处理。 String 类位于 java.lang 包中。默认情况下,该包被自动导入所有的程序。创建 String 对象的方法:2、java中字符串的不变性String 对象创建后则不能被修改,是不可变的,所谓的修改其实

2021-08-06 15:58:50 1185

原创 java的异常

1、认识异常Java 异常顶层父类Throwable,并实现了Serializable接口由Throwable派生出来的异常类有两种Error类和Exception类Error:错误,代表JVM本身的错误,处理程序运行环境方面的异常,不能通过代码处理。比如OutOfMemoryError、AWTErrorException:异常,程序运行时发生,可以被Java异常处理机制使用比如IOException、SQLException、RuntimeException以上Error、RuntimeEx

2021-08-05 17:38:44 77

原创 面向对象的基础

在java中万物介对象类是抽象的概念,是对象的模板。类比C语言中的结构体和结构体变量,类(class)==结构体,对象就是类定义的变量。。面向对象编程是利用编程方式体现出现实中类与对象从已有现实的类中定义程序的类(class)从类(class)创建(实例化)具体的对象(object)语法:public class 类名{//类的内容}类名要有直白意义,最好是英文首字母大写:Dog、BigDecimal不要数字开头,不要包含特殊字符创建类的实例对象类名 对象名 = new 类名()

2021-07-28 23:18:39 80

原创 什么是大数据

1、什么是大数据大数据是一个规模达到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围。数据的量多到PB级别2、大数据的特点4V:volume(大量)、velocity(高速 )、variety(多样)、value(价值)3、大数据的结构结构化数据:简单来说就是数据库;是由二维表结构来逻辑表达和实现的数据;非结构化数据:数据结构不规则或不完整;没有预定的数据模型;(如:聊天的数据,浏览商品的数据)...

2021-07-28 22:20:45 181

原创 java条件语句

生活中,我们经常需要先做判断,然后才决定是否要做某件事情。例如,如果考试成绩大于 90 分,则奖励一个 IPHONE 5S 。对于这种“需要先判断条件,条件满足后才执行的情况”,就可以使用 if 条件语句实现。语法:执行过程...

2021-07-25 16:16:31 58

原创 shell脚本入门

1、脚本格式脚本以#!/bin/bash开头(指定解析器)标题2、第一个shell脚本:helloworld#!/bin/basheho "hhhhhhh"sh helloworld.shbash helloworld.shchmod 777 helloworld.sh---->./helloworld.sh这些方式都可以3.多命令处理在/home/hxx/,目录下创建一个banzhang.txt文件中增加“I love cls”#!/bin/bashcd /home/hx

2021-07-11 11:41:05 134

原创 Makefile的编写

一、Makefile简介:工程管理器,顾名思义,是指管理较多的文件,Make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能够根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件文件的内容来执行大量的编译工作,Make将只编译改动的代码文件,而不用完全编译。Makefile文件一般和项目的其他源文件放在同一个目录下。在机器上可以同时存在许多不同的makefile文件,如果一个大项目,可以用多个不同的makefile文件来分别管理项目的不同部分。Make

2021-06-17 09:36:10 165

转载 C++类和对象

一、C语言的结构体C语言的结构体不允许有函数,定义结构体变量的方法是: struct 结构体名 结构体变量名;在C++中,结构体的成员可以有函数,定义结构体变量可以用:结构体名 结构体变量名;struct关键字可以不书写。例子:#include <stdio.h>#include <string.h> struct st_girl{ char name[50]; // 姓名 int age; // 年龄 int he

2021-06-02 09:47:24 261

转载 C++函数重载

一、函数重载的概念在实际开发中,有时候我们需要实现几个功能类似的函数,例如从XML字符串中解析字段,字段的类型可能是int、long、double。在C语言中不允许函数同名,程序员只能设计出三个不同名的函数,其函数声明如下:// 解析XML字符串的函数族,支持int、char *和double三种类型。// 返回值:0-成功,-1-失败。int GetXMLBuffer_Int(const char *in_XMLBuffer,const char *in_FieldName,int *out_Va

2021-06-01 11:50:01 913

转载 C++基础

一、从C语言到C++与C语言相比C++有很多新的特征,这些新特征并不一定实用,甚至很烦人。但是,C++的开发效率确实比C要高,所以我仍然采用断章取义的方式来介绍C++的知识。不管是C还是C++,实用就好。二、C++命名C++头文件一般采用.h后缀,也用有.hpp的。C++程序文件一般采用.cpp后缀,也有用.cc的,建议采用.cpp,C++对程序文件的命名没有强制要求,采用.cpp为后缀是大部分程序员的习惯。在Linux系统下编译C++用g++,编译的方式和编译C语言一样2.1、g++的安装s

2021-06-01 10:32:41 124

原创 多态的概念和案例实现

一、多肽的概念多肽是指同一个操作作用于某一类对象,可以有不同的解释,产生不同的执行结果(如:吃这个动作,对动物来说都可以发生这个动作,但是猫吃和狗吃是不同的,因为它们吃的东西不同)多肽存在的三个必要条件:1、需要存在继承或实现(接口)关系2、同样的方法调用而不执行操作、运行不同代码(重写)3、在运行时父类或接口的应用变量可以引用其子类的对象多肽的作用:1、多肽通过分离做什么和怎么做,从一个角度将接口和实现进行分离2、多肽消除了类型之间的耦合关系3、多肽的存在提高了程序的拓展性和后期的可维

2021-05-09 19:50:23 332

转载 Linux系统内核框图

其中可以看到三个层次:硬件级、内核级和用户级。文件子系统管理文件。包括:分配文件空间、管理空闲空间、控制对文件的存取以及为用户检索数据。进程控制子系统负责进程同步、进程间通信、进程调度和存储管理。Linux内核主要包括5个模块:进程调度模块、内存管理模块、文件系统模块、进程间通信模块和网络接口模块。1.进程调度模块用来负责控制进程对CPU资源的使用。2.内存管理模块用于确保所有进程能够安全地共享机器主内存区。3.文件系统模块用于支持对外部设备的驱动和存储。(一些皆文件)4.进程间通信模块用.

2021-03-24 17:22:48 458

空空如也

空空如也

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

TA关注的人

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