自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Hive 解决数据倾斜方法

数据倾斜问题, 通常是指参与计算的数据分布不均, 即, 进而导致该 Reduce 所需的时间远超其他 Reduce, 成为整个任务的瓶颈。Hive 中的数据倾斜常出现在分组聚合和 join 操作的场景中,下面分别介绍在上述两种 场景下的优化思路。

2024-04-15 20:23:20 1273

原创 Hive表的优化

将 key 相对分散,并且数据量小的表放在 join 的左边,可以使用 map join 让小的维度表先进内存。在 map 端完成 join。实际测试发现:新版的 hive 已经对小表 JOIN 大表和大表 JOIN 小表进行了优化。小表放在左边和右边已经没有区别。1)空 KEY 过滤有时 join 超时是因为某些 key 对应的数据太多,而相同 key 对应的数据都会发送到相同的 reducer 上,从而导致内存不够。此时我们应该仔细分析这些异常的 key,很多情况下,这些 key 对应的数据是异常数

2024-04-15 19:10:17 766

原创 维度建模理论之维度表

维度表是维度建模的基础和灵魂。前文提到,事实表紧紧围绕业务过程进行设计,而维度表则围绕业务过程所处的环境进行设计。维度表主要包含一个主键和各种维度字段,维度字段称为维度属性。

2024-03-20 17:23:25 805

原创 维度建模理论之事实表

事实表作为数据仓库维度建模的核心,紧紧围绕着业务过程来设计。其包含与该业务过程有关的维度引用(维度表外键)以及该业务过程的度量(通常是可累加的数字类型字段)。事务型事实表用来记录各业务过程,它保存的是各业务过程的原子操作事件,即最细粒度的操作事件。粒度是指事实表中一行数据所表达的业务细节程度。事务型事实表可用于分析与各业务过程相关的各项统计指标,由于其保存了最细粒度的记录,可以提供最大限度的灵活性,可以支持无法预期的各种细节层次的统计需求。

2024-03-20 16:15:26 784

原创 数据仓库相关概述

数据模型就是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据。只有将数据有序的组织和存储起来之后,数据才能得到高性能、低成本、高效率、高质量的使用。高性能:良好的数据模型能够帮助我们快速查询所需要的数据。低成本:良好的数据模型能减少重复计算,实现计算结果的复用,降低计算成本。高效率:良好的数据模型能极大的改善用户使用数据的体验,提高使用数据的效率。高质量:良好的数据模型能改善数据统计口径的混乱,减少计算错误的可能性。

2024-03-20 15:37:02 891

原创 Kafka3.x进阶

acks=0,生产者发送过来数据就不管了,

2024-02-22 16:47:25 1286

原创 KafKa3.x基础

Kafka传统定义:Kafka是一个分布式的基于发布/订阅模式的消息队列(MessageQueue),主要应用于大数据实时处理领域。发布/订阅:消息的发布者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接收感兴趣的消息。Kafka最 新定义: Kafka是 一个开源的分布式事件流平台 (Event Streaming Platform),被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用。

2024-02-22 16:46:51 680

原创 HBase 进阶

每一个 region 维护着 startRow 与 endRowKey,如果加入的数据符合某个 region 维护的rowKey 范围,则该数据交给这个 region 维护。那么依照这个原则,我们可以将数据所要投放的分区提前大致的规划好,以提高 HBase 性能。1)手动设定预分区2)生成 16 进制序列预分区3)按照文件中设置的规则预分区aaaabbbbccccdddd4)使用 JavaAPI 创建预分区import org。

2024-02-19 21:38:45 1563

原创 HBase API

参考来源: B站尚硅谷HBase2.x新建Maven项目后在 pom.xml 中添加依赖:注意:会报错 javax.el 包不存在,是一个测试用的依赖,不影响使用创建连接根据官方 API 介绍,HBase 的客户端连接由 ConnectionFactory 类来创建,用户使用完成之后需要手动关闭连接。同时连接是一个重量级的,推荐一个进程使用一个连接,对 HBase的命令通过连接中的两个属性 Admin 和 Table 来实现。多线程创建连接使用类单例模式,确保使用一个连接,可以同时用于多个线程。

2024-02-19 17:55:32 644

原创 Hadoop3.x基础(4)- Yarn

则两个应用分别需要A(2%CPU, 3%内存)和B(6%CPU, 1%内存)的资源,这就意味着A是内存主导的, B是CPU主导的,针对这种情况,我们可以选择DRF策略对不同应用进行不同资源(CPU和内存)的一个不同比例的限制。DRF(Dominant Resource Fairness),我们之前说的资源,都是单一标准,例如只考虑内存(也是Yarn默认的情况)。需求1:default队列占总内存的40%,最大资源容量占总资源60%,hive队列占总内存的60%,最大资源容量占总资源80%。

2024-02-03 23:43:35 1492

原创 Hadoop3.x基础(3)- MapReduce

MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。1)什么是序列化序列化就是把内存中的对象,转换成字节序列(或其他数据传输协议)以便于存储到磁盘(持久化)和网络传输。反序列化就是将收到字节序列(或其他数据传输协议)或者是磁盘的持久化数据,转换成内存中的对象。2)为什么要序列化。

2024-02-01 21:30:14 1007

原创 Hadoop3.x基础(2)- HDFS

1)HDFS产生背景随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。HDFS只是分布式文件管理系统中的一种。2)HDFS定义HDFS(Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。适合一次写入,多次读出的场景。

2024-01-30 08:00:00 1058

原创 Hadoop3.x基础(1)

1)Hadoop是一个由Apache基金会所开发的分布式系统基础架构。2)主要解决,海量数据的存储和海量数据的分析计算问题。3)广义上来说,Hadoop通常是指一个更广泛的概念——**Hadoop生态圈**。Hadoop Distributed File System,简称HDFS,是一个分布式文件系统。1)NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等。

2024-01-29 14:33:20 1020

原创 Flink SQL(续)

Flink的Table API和SQL提供了多种自定义函数的接口,以抽象类的形式定义。标量函数(Scalar Functions):将输入的标量值转换成一个新的标量值;表函数(Table Functions):将标量值转换成一个或多个新的行数据,也就是扩展成一个表;聚合函数(Aggregate Functions):将多行数据里的标量值转换成一个新的标量值;表聚合函数(Table Aggregate Functions):将多行数据里的标量值转换成一个或多个新的行数据。1)整体调用流程。

2024-01-29 08:00:00 925

原创 Hive3.1.3基础(续)

压缩格式算法文件扩展名是否可切分DEFLATEDEFLATE.deflate否GzipDEFLATE.gz否bzip2bzip2.bz2是LZOLZO.lzo是SnappySnappy.snappy否为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器,如下表所示:Hadoop查看支持压缩的方式hadoop checknative。Hadoop在driver端设置压缩。压缩格式对应的编码/解码器DEFLATEgzipbzip2LZO。

2024-01-27 17:35:36 954

原创 Hive3.1.3基础

1)Hive简介Hive是由Facebook开源,基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。那为什么会有Hive呢?它是为了解决什么问题而诞生的呢?下面通过一个案例,来快速了解一下Hive。例如:需求,统计单词出现个数。(1)在Hadoop中用MapReduce程序实现的,需要写Mapper、Reducer和Driver三个类,并实现对应逻辑,相对繁琐。(2)如果通过Hive SQL实现,一行就搞定了,简单方便,容易理解。

2024-01-26 22:24:06 1415

原创 Flink SQL

1)创建数据库(1)语法(2)案例2)查询数据库(1)查询所有数据库(2)查询当前数据库3)修改数据库4)删除数据库RESTRICT:删除非空数据库会触发异常。默认启用CASCADE:删除非空数据库也会删除所有相关的表和函数。5)切换当前数据库。

2024-01-19 14:59:53 938

原创 Flink1.17 基础知识

Flink1.17 基础知识来源:B站尚硅谷目录Flink1.17 基础知识Flink 概述Flink 是什么Flink特点Flink vs SparkStreamingFlink的应用场景Flink分层APIFlink快速上手创建项目WordCount代码编写批处理流处理Flink部署集群角色部署模式会话模式(Session Mode)单作业模式(Per-Job Mode)应用模式(Application Mode)Standalone运行模式(了解)会话模式部署单作业模式部署应用模式部署YARN运行

2024-01-18 20:01:02 1307

原创 线性插值、双线性插值、双三次插值学习笔记-图像处理

B站了解线性插值、双线性插值、双三次线性插值

2022-11-21 19:56:00 1126 2

原创 深入理解计算机系统——知识总结(二)

---------------------------------先写第九章的内容-------------------------------------

2022-08-04 23:55:46 834 1

原创 动态规划——连续子数组最大和/乘积

动态规划

2022-07-07 15:40:18 773

原创 echarts结合百度地图使用

百度地图结合echarts显示

2022-07-05 16:44:24 5720 3

原创 GraphQL入门

npm init -y下载依赖包+添加 .babelrc 文件在package.json中添加运行命令创建index.js文件(入口文件)创建api文件夹,在文件夹内新增schema.js、resolvers.jsschema.js内容resolvers.js内容运行运行成功在浏览器上打开http://localhost:4000/graphql,然后点击Query your server就可以进入数据操作界面。字段(Fields)简单而言,Grap

2022-06-22 18:31:08 383

原创 下载scikit_learn

直接下载的话,可能会报以下的错误解决方法:在python中输入以下代码运行,查看包文件命名输出结果下载SciPy下载sklearn注意:这里的路径要和你下载包的路径一致

2022-06-16 11:54:59 6525

原创 Python爬虫的初体验——简单的例子

爬虫的简单例子网址:http://www.ci123.com/baike/nbnc/31输出结果:一个表(excel 或数据库)三个字段分别是 类型、标题、html富文本。爬虫代码如下:import requestsfrom bs4 import BeautifulSoupimport xlwturl = 'http://www.ci123.com/baike/nbnc/'headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10

2022-04-20 18:24:13 1464

原创 深入理解计算机系统——知识总结

第 1 章 计算机系统漫游#include <stdio.h>int main(){ printf ( "Hello, world\n") ; return 0;}尽管hello程序非常简单,但是为了它的运行,系统的每个主要组成部分需要协调工作,本书就是了解在系统执行hello程序时,系统发生了什么以及问什么会这样。本章就是通过跟踪hello程序的生命周期来开始对系统进行学习——从它开始被程序员创建开始,到在系统上运行,输出简单的消息,然后终止的过程。1.1 信息就

2022-04-11 14:29:12 15882 3

原创 深入理解计算机系统读书笔记

第1章1.1 信息就是位+上下文源程序实际上就是一个由值0和1组成的位(又称位比特)序列,8个位被组织成一组,称为字节(表示程序中的文本字符)。程序是以字节序列的方式存储在文件中的,每个字节都有一个整数值,对应于某些字符,每个文本行都是以一个看不见的换行符’\n‘来结束。只由ASCII字符构成的文件称为文本文件,所有其他文件都称为二进制文件。系统中的所有信息———包括磁盘文件、内存中的程序、内存中存放的用户数据以及网络上传送的数据,都是由一串比特表示。区分不同的数据对象的唯一方法就是读到这些数据对象

2022-01-15 11:26:49 735

原创 js实现构建二叉树

首先构建一个类,表示一颗二叉树 function BinarySearchTree() { function Node(key) { this.key = key; this.left = null; this.right = null; } // 刚开创建时,根节点为空 this.root = null; }开始往二叉树中插入节点BinarySearchTree.prot

2021-09-23 20:50:27 790

原创 手写diff算法

环境搭建创建一个文件夹,来到文件夹目录下,使用npm init -y 生成package.json文件。下载webpack、webpack-cli、webpack-dev-server,这里需要特别注意的是webpack的各个版本。下载对应的版本cnpm i webpack@5 webpack-cli@3 webpack-dev-server@3 -S创建webpack.config.js文件module.exports = { entry: { index:

2021-09-15 23:49:46 471

原创 npm ERR! command failednpm ERR! command C:\WINDOWS\system32\cmd.exe /d /s /c node-gyp rebuild

今天下午使用npm下载websocket时遇到了一个错误,可能是我实战经验太少了,这个错误找了一个多小时。在这过程中升级了node的版本、又重新安装了淘宝镜像......一系列,主要是刚开始我以为我之前安装的python已经配置好环境变量(我之前上课的时候一直都有在用python,所以没有理由怀疑这个),而且我主观的以为这刚python应该没有多大的关系,于是就在那些细节末节的错误中找错,结果找了......。具体错误如下:npm ERR! code 1npm ERR! path F:\vuep

2021-06-21 16:41:54 33689 7

原创 手写实现apply、call、bind

个人觉得要学会这三种手写方法需要对apply、call、bind的基本用法要有一定的了解和认识,最重要的是对this指向也要有所了解。三种方法的手写思路整体上差不多,只要看懂了一个,基本上就可以快速扫读其他的。这是面试的重点题。手写实现apply在函数原型上封装myApply函数 , 实现和原生apply函数一样的效果Function.prototype.myApply = function(context) {}存储要转移的目标对象var _this = context || wi

2021-06-17 00:00:23 256

原创 利用原生js实现简易照片墙

效果演示基本布局<ul id="pic"> <li> <img data-index="0" src="./images/pic1.jpg" alt=""> </li> <li> <img data-index="1" src="./images/pic2.jpg" alt=""> </li>

2021-06-06 17:46:29 979

原创 浅谈四种设计模式

在这里讲述代理模式、观察者模式、装饰器、职责链模式。1、代理模式首先通过一小段代码来理解一下什么是代理模式男孩要去给女孩送礼物,但是不好意思直接送,所以就出现了一个代理对象去帮男孩给女孩送礼物。代码示例// 代理模式的简单实现 // 声明对象 var Girl = function (name) { this.name = name; } var Boy = function (girl) {

2021-05-10 18:24:36 192 2

原创 记录第一次笔试---来自字节飞书前端实习生笔试

5月9号晚上7点怀着紧张又激动的心情参加了字节前端笔试,说实话,做完题之后整个人都是崩溃的,三道算法题没有一道是完全通过测试的。以下是题目。1、题目描述的大概是:给定一个字符串B和长度A,求B的子字符串中长度为A的子字符串,B中的字符串是没有重复的。如果长度A大于字符串B的长度,则输出0,B的长度是不大于52的,如果B中包含了重复的字符,则输出0。(题目大概意思是这样,不知道有没有理解错)。输入一行字符串,包括字符串B和以逗号隔开的长度A。示例输入word,2输出6解释wo、wr、

2021-05-10 12:05:28 861

原创 学习记录——前端性能优化

前端页面是直接与用户交互的,用户体验性好与否取决于性能,所以前端性能优化是非常重要的。前端如何优化性能呢1、减少http请求一个完整的http请求需要经过:(1)DNS解析,将域名解析为ip地址(2)TCP连接,TCP三次握手(3)发送HTTP请求(4)服务器接受响应,返回HTML文件给浏览器(5)浏览器得到HTML文件之后开始渲染页面(6)断开连接,TCP四次挥手所以必须减少http请求,可以将多个小文件合并为一个大文件。2、使用服务器端渲染浏览器渲染一个页面.

2021-04-25 16:41:45 94

原创 学习记录---手写promise、promise.all

手写实现Promisepromise有三种状态,即pending(等待)、fulfilled(成功)、reject(拒绝)。首先实现Promise以下代码的实现都是在B站学习视频中记录的笔记代码 // 基本结构 function myPromise(executor) { let self = this; self.status = 'pending' //状态 self.value = null; //

2021-04-24 21:10:08 139

原创 封装Ajax

为了方便每次客户端向服务器端发送请求时,不用写重复的Ajax请求相同的代码,在这里将封装一个ajax方法代码如下:function ajax(options) { // 设置请求参数的默认值 var defaults = { type: 'get', data: {}, headers: { 'Content-Type':

2021-04-21 16:39:22 92

原创 解决跨域请求的四种方法

跨域跨域就是请求的url中的“协议”、“域名”、“端口号”其中任何一种不一样都是属于跨域。解决跨域的主要的四种方法是jsonp、跨域资源共享CORS(Cross-Origin Resource Sharing)、proxy代理、webpack中间件。jsonp解决跨域jsonp只能解决get方法。在这里设置两个不同的域名,即http://localhost:3000与http://localhost:3001,端口号不同即为跨域。为jsonp启动两个不同服务,前端端口号为3000,利用nod

2021-04-20 17:14:06 8078

原创 蓝桥杯校内模拟赛

问题描述一个正整数如果任何一个数位不大于右边相邻的数位,则称为一个数位递增的数,例如1135是一个数位递增的数,而1024不是一个数位递增的数。  给定正整数 n,请问在整数 1 至 n 中有多少个数位递增的数?输入格式输入的第一行包含一个整数 n。输出格式输出一行包含一个整数,表示答案。样例输入30样例输出26具体代码实现import java.util.Scanner;...

2021-04-15 18:04:13 234

原创 利用setTimeout实现setInterval

setTimeout的方法是设置n秒之后执行函数,而setInterval是设置每间隔n秒就执行一次函数。两者之间最大的区别在于setTimeout只执行函数一次,而setInterval是不断的执行。这里利用setTimeout实现setInterval,用到的方法是回调函数,闭包。这里没有实现清除定时器的方法。具体实现过程如下,思路比较简单。 function newInterval(func, millisecond) { function inside() {

2021-03-27 19:32:25 555

空空如也

空空如也

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

TA关注的人

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