- 博客(61)
- 收藏
- 关注
原创 Git不影响当前开发修复bug步骤
新分支修复bug步骤假设当前在分支 siyuan, 且正在开发中1 git stash保存当前修改2 git checkout master切换到master分支3 git pull更新到最新代码4 git checkout -b bug-fix迁出一个bug修复分支5 修复bug6 git add ****git commit把修改提交7 git push origin bug-fix分支推送到远端8 git checkout siyuan回到开发分支9 git sta
2021-07-19 15:37:19 284
原创 十进制与任意进制互转
//n进制转十进制 static int transfer(char[] chars, int n){ int result = 0; int index = chars.length - 1; while (index >= 0){ result += (chars[index] - '0') * Math.pow(n, chars.length - 1 - index); i.
2021-01-07 15:25:14 169
原创 认识数据仓库
1.企业数据仓库的建设,是以企业现有业务系统和大量业务数据的积累为基础。数据仓库不是静态的概念,只有把数据及时的交给需要这些数据的人,支持他们做出改善其业务经营的决策,数据才能转变为数据资产,产生业务价值。而把分散在企业内部各处的数据加以整理、归纳和重组,并及时的提供给相应的管理决策人员,是数据仓库的根本任务。2.与传统的关系型数据库相比,数据仓库更像是一种过程,对分散在企业内部各处的业务数据的整合、加工、分析的过程,而不是一种可以购买的产品。...
2020-10-30 18:01:29 264
原创 Linux有关环境变量
1)修改/etc/profile 文件:用来设置系统环境参数,比如$ PATH. 这里面的环境变量是对系统内所有用户生效。使用 bash 命令,需要 source /etc/profile 一下。2)修改~/.bashrc 文件:针对某一个特定的用户,环境变量的设置只对该用户自己有效。 使用 bash 命令,只要以该用户身份运行命令行就会读取该文件。3)把/etc/profile 里面的环境变量追加到~/.bashrc 目录。cat /etc/profile >> ~/.bashrc4)
2020-10-29 17:26:47 109
原创 Shell实用指令
1.cut -f 2 -d “t” (用 t 切割,取出第2列,默认的切割符为“\t")2.sed “2a ab c” a.txt (在a.txt文件中的第2行下增加ab c,不会改变源数据)sed “/aa/d” a.txt (把a.txt文件中包含aa的字符串删除)sed “s/aa/bb/g” a.txt(把a.txt文件中,所有的aa替换成bb(g代表全局的))3.awk -F : ‘/^root/ {print $7}’ passwd (用 : 切割passwd中的内容,匹配到以root
2020-09-08 09:53:26 288
原创 Linux文本编辑器常用快捷键
拷贝当前行 yy , 拷贝当前行向下的5行 5yy,并粘贴 p。【快捷键在正常模式下使用】删除当前行 dd , 删除当前行向下的5行 5dd在文件中查找某个单词 [命令模式下 /关键字 , 回车 查找 , 输入 n 就是查找下一个 ]设置文件的行号,取消文件的行号.[命令行下 : set nu 和 :set nonu]编辑 /etc/profile 文件,使用快捷键到底文档的最末行[G]和最首行[gg] 【正常模式下】在一个文件中输入 “hello” ,然后..
2020-09-03 18:50:17 389
原创 数据库三大范式
范式可以理解为一张数据表的表结构,符合的设计标准的级别。使用范式的根本目的是:1)减少数据冗余,尽量让每个数据只出现一次。2)保证数据一致性缺点是获取数据时,需要通过Join拼接出最后的数据。完全函数依赖:(A,B)可以推出C,A不可以推出C,B不可以推出C,那么C完全函数依赖于(A,B)。部分函数依赖:(A,B)可以推出C,A可以推出C或B可以推出C,那么C部分函数依赖于(A,B)。传递函数依赖:A可以推出B,B可以推出C,但C不能推出A,那么C传递函数依赖于A。第一范式:字段不可分割。
2020-08-09 20:55:04 343
原创 HQL常用函数
HQL与SQL中作用相同但用法不同的函数,左侧HQL右侧SQLNVL(a,b)=IFNULL(a,b)DATE_FORMAT(‘2010-01-01’,‘yyyy-MM-dd’)=DATE_FORMAT(‘2010-01-01’,’%Y-%m-%d’)regexp_replace(str,oriStr,desStr)=replace(str,oriStr,desStr)#用desStr替换str中的所有的oriStr。HQL与SQL中作用与用法相同的函数CONCAT(str1,str2,…)CO
2020-08-09 19:30:56 1051
原创 hive中的四种排序对比
order by全局排序,只有一个reducer。sort by区内排序,每个reducer内部排序,需要指定分区原则,因此与distribute by 连用。distribute by分区排序。cluster by当 distribute by 的字段和 sort by 的字段相同时,可代替 distribute by 和 sort by 。...
2020-08-09 09:06:17 126
原创 hive表的数据加载脚本
#!/bin/bashdb=gmallhive=/opt/module/hive/bin/hive#-n表示如果后面变量为空,则返回false。不为空则返回true。if [ -n "$1" ] ;then do_data=$1else #取当前日期的前一天,并只取年、月、日。 do_data=`data -d "-1 day" +%F`fisql="load data inpath '/origin_data/gmall/log/topic_start/$do_data
2020-08-03 10:08:26 180
原创 MapReduce过程中的优化
1.增大环形缓冲区的容量(默认100M)或者提高溢写的阈值,可以减少溢写到磁盘的次数。2.增大每次归并的文件个数(默认为10个),可以减少归并的次数。3.归并的过程中,可以对数据进行合并,前提是合并操作不会影响最终的业务逻辑。4.为了减少磁盘IO可以对数据进行压缩,可以进行压缩的地方有map输入、map输出、reduce输出。map输入需求:支持切片(LZO、BZIP2)map输出需求:快(snappy)reduce输出需求:若永久保存则压缩率高(gzip),若输出数据作为下一个map输入则需要
2020-07-31 14:32:12 145
原创 解决同步修改集群时间脚本没有终端存在的问题
!/bin/bashfor i in hadoop102 hadoop103 hadoop104do #-t 强制设定伪终端 ssh -t $i "sudo date -s $1"done
2020-07-29 18:11:41 114
原创 Zookeeper集群操作Shell脚本
#脚本解析器#!/bin/bash#分支结构,$1表示脚本名后面的第一个输入参数case $1 in"start"){ #循环执行命令 for i in hadoop102 hadoop103 hadoop104 do #在对应节点执行命令 ssh $i "/opt/module/zookeeper-3.4.10/bin/zkServer.sh start" done};;"stop"){ for i in hadoop1
2020-07-29 17:35:33 238
原创 Hadoop配置支持LZO压缩
1)先下载lzo的jar项目2)下载后的文件名是一个zip格式的压缩包,先进行解压,然后用maven编译。3)将编译后的jar包 放入hadoop/share/hadoop/common/目录下。4)将jar包同步到集群。5)core-site.xml增加配置支持LZO压缩<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?>&l
2020-07-29 13:04:41 238
原创 HDFS存储多目录
HDFS默认的存储路径是在core.site.xml中。<!-- 指定Hadoop运行时产生文件的存储目录 --><property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-2.7.2/data/tmp</value></property>如果当前目录所在的磁盘块已满,需要加入新的磁盘块,那么如何使新加入的磁盘块能够在HDFS中发挥存储作
2020-07-29 12:33:08 592
原创 数据仓库基础概念
数据仓库为什么要分层?1.把复杂的问题简单化:把一个复杂的问题分解成多个步骤来完成,每一层只处理单一的步骤,简单、方便定位。2.减少重复开发:规范数据分层,通过的中间层数据,能够极大的减少重复计算,增加一次结果的复用性。3.隔离原始数据:不论是数据的异常还是数据的敏感性,使真实数据与统计数据解耦开。...
2020-07-25 19:23:04 283
原创 HBase之优化
组成架构Master的作用:1.与客户端通信实现表的增删改查。2.分配Regions到每个RegionServer,监控每个RegionServer的状态。RegionServer的作用:1.与客户端通信实现对数据的增、删、查。2.对Region进行分、合。第三方框架Zookeeper在HBase集群上的作用:1.文件系统中管理meta表和Master的位置等信息,客户端可以通过访问zookeeper集群获取这些信息。2.为Master分担客户端对数据的读写工作。写数据流程1.客户端对
2020-07-17 15:35:51 78
原创 Yarn组成架构、Job提交流程及调度器
Yarn组成架构ResourceManager:全局资源管理器,包括ResourceScheduler和ApplicationManager。ApplicationManager:主要负责接收client传输的job请求,为应用(mr程序)分配第一个Container(资源池)来运行第一个ApplicationMaster,还负责监控ApplicationMaster,并且在运行失败的时候重启ApplicationMaster。ResourceScheduler:让每一个节点都充分利用起来,合理的分
2020-07-17 15:24:10 158
原创 MapReduce的组成架构及工作原理
MapReduce组成架构一个完整的MapReduce程序在分布式运行时有三类实例进程:1.MrAppMaster:负责整个程序的过程调度及状态协调。2.MapTask:负责Map阶段的整个数据处理流程,并发执行,数目由数据的分片数决定,map()按行处理,对每个键值对调用一次。3.ReduceTask:负责Reduce阶段的整个数据处理流程,并发执行,数目由数据的分区数决定。reduce()对每一组相同键的键值对调用一次。MapReduce工作原理客户端job提交切片信息、配置文件信息、驱动j
2020-07-17 15:18:15 1613
原创 HDFS组成架构、工作原理以及读写数据流程
组成架构1.NameNode:管理文件系统的命名空间,维护着文件系统树以及整棵树内所有的文件和目录。对于文件来说保存了副本级别、访问时间、访问权限、块大小、字节数、组成一个文件的块等。对于文件目录来说保存了访问权限等。同时记录着每个文件中各个块所在的数据节点信息,但这个信息不永久保存,每次启动时由数据节点上报。2.DataNode:管理数据块与操作系统的映射关系、执行数据块的读写操作3.Client:文件切分、与NameNode交互,获取文件的位置信息、与DataNode交互,读取或写入数据
2020-07-17 15:07:54 369
原创 八大排序算法原理及实现
插入排序原理:从数组第二个元素开始,依次与第一个元素到当前元素的前一个元素比较,直到找到合适位置,移动、插入。public static void insertSort(int[] arr){ //用于交换的临时变量 int temp; //从第二个元素起,依次从最左侧比较 for(int i=1;i<arr.length;i++){ for (int j=0;j<i;j++){
2020-07-12 00:09:41 254
原创 二叉树的递归和非递归层序遍历
非递归层序遍历二叉树//非递归层序遍历 public void sequenceTraversal(){ //每一层加入队列的节点个数 int num=0; //当前层下一层的入队节点个数 int nextNum=0; //每一层已经遍历的节点个数 int alreadyNum=0; //存放节点的队列 Queue queue=new Queue(); /
2020-07-02 16:41:07 194
原创 二叉树的前中后序遍历
二叉树的分类满二叉树:二叉树的所有叶子节点都在最后一层,并且节点总数为2^n-1,n为二叉树的层数。完全二叉树:二叉树的所有叶子节点都在最后一层或者倒数第二层,而且最后一层的叶子节点在左边连续,倒数第二层的叶子节点在右边连续。二叉树遍历package tree.binaryTree;public class BinaryTree { //根节点 private Node root; public BinaryTree(Node root) { this
2020-07-01 21:44:52 230
原创 私人电脑+家庭网络建设个人网站的经验总结
相信很多计算机相关专业的学生在做课程设计或学期末的综合实践时,都会选择B/S架构的项目,但在学生时代由于设备和网络的限制,在建设个人网站时会遇到很多问题。我最尴尬的一次是我女朋友过生日时,我给她编写了个简单的情侣空间网站,可以上传文本形式的事件和所对应的图片并分类存储,用于记录我们之间有意思的事情。由于那时还没有学习计算机网络,把内网IP当作外网IP使用,结果生日当天她访问时找不到服务器,我又加班加点搜集资料实现端口映射,在她生日的后一天才把这份礼物补上。在开发多个网站项目的过程中,经过自己的不断尝试探索后
2020-06-26 22:45:47 955
原创 SQL之视图、变量、存储过程、函数
视图虚拟表,和正常表一样使用。视图的好处:修改视图:#方式一:视图不存在就创建,存在就替换create or replace view name as select ...;#方式二:alter view name as select ...;删除视图:drop view name1,name2...;查看视图:desc name;show create view name;安全性:由于对视图进行修改会引起源数据的修改,所以视图有不可更新的规则,如下:视图与表的对比:表中
2020-06-23 10:40:05 628
原创 SQL基础
SQL中"+"是运算符,若想连接字符串,需用concat(str1,str2,…)。若拼接参数中有NULL,则拼接结果为NULL。可使用IFNULL(可能为NULL的字段,若是NULL则返回的值)。条件运算符:>,<,=,<>,>=,<=;逻辑运算符:&&,||,!或and,or,not;模糊查询:like,between and,in,is null.通配符:%(任意多个字符),_(任意单个字符)。若想要匹配的字符为通配符,需使用转义字符。有两种用法
2020-06-22 21:00:05 140
原创 SQL的七种JOIN
#内连接:左表与右表的共有SELECT <select_list>FROM tableA AINNER JOIN tableB BON A.key=B.key#左连接:左表的独有 + 左表与右表的共有(表的行数不同,用null补齐)SELECT <select_list>FROM tableA ALEFT JOIN tableB BON A.key=B.key#左连接:右表的独有 + 左表与右表的共有(表的行数不同,用null补齐)SELECT <sele
2020-06-20 17:10:37 156
原创 SQL的手写与机读
手写顺序SELECT DISTINCT<select_list>FROM<left_table> <join_type>JOIN <right_table> on <join_condition>WHERE<where_condition>GROUP BY<group_by_list>HAVING<having_condition>ORDER BY<order_by_conditi
2020-06-20 16:22:41 144
原创 MySQL之锁
是什么协调多个进程或线程并发访问共享资源的的机制。锁的种类按照对数据的操作类型可分为:1.读锁:共享锁,对于同一份数据,多个读操作可以同时进行,互不影响。2.写锁:排它锁,当前操作没有完成时,会阻断其它的读锁、写锁。按照粒度可分为:1.表锁:偏向MyISAM存储引擎、开销小、加锁快,不会出现死锁、锁定粒度大、发生锁冲突的概率最高、并发度最低。2.行锁:偏向InnoDB存储引擎、开销大、加锁慢、会出现死锁、锁定粒度最小、发生锁冲突的概率最低、并发度最高。还有一种锁叫间隙锁:当使用范围条件而不
2020-06-11 09:16:59 135
原创 MySQL之数据库事务
事务是什么事务是由一组SQL语句组成的逻辑处理单元。事务的四大属性1.原子性(Atomicity):事务是原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。2.一致性(Consistent):在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性。事务结束时,所有的内部数据结构(如B树索引或双向链表)也都必须是正确的。3.隔离性(Isolation):数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的“独立”环境执行。
2020-06-11 07:44:00 112
原创 SQL优化分析之show profiles的使用
是什么是MySQL提供用来分析当前会话中语句执行的资源消耗情况。默认情况下,参数处于关闭状态,并只保存最近15次的运行结果。怎么用分析步骤:1.查看当前的MySQL版本是否支持。2.开启功能,默认是关闭,使用前需要开启。3.查看结果:show profiles;4.诊断SQL:show profile cpu,block io for query SQL_id。5.常用的需要优化的诊断结果:converting HEAP to MyISAM:查询结果太大,内存不够用了,查询数据往磁
2020-06-10 16:01:15 356 1
原创 MySQL之EXISTS的使用
EXISTSselect … from table where exists (subquery):将主查询的数据,放到子查询中做条件验证,根据验证结果(true或false)来决定主查询的数据结果是否得以保留。EXISTS与IN的使用情景:
2020-06-10 14:00:10 1688
原创 MySQL优化之索引优化
频繁作为查找条件的字段应该建索引。频繁更新的字段不应该建索引,因为更新数据的同时,还需要更新索引,效率低。单表索引优化:不要在需要范围查找的字段上建索引,会导致索引失效。两表索引优化:左连接在右表的连接字段上建立索引;右连接在左表的连接字段上建立索引。join优化:尽可能减少join语句中NestedLoop(嵌套循环)的循环总次数。用小的结果集驱动大的结果集。优先优化NestedLoop的内层循环。保证join语句中被驱动表上join条件字段已经被索引。当无法保证被驱动表的join条件字
2020-06-09 21:41:41 132
原创 MySQL优化之索引失效的原因
索引失效原因索引字段作为范围查找的条件时。范围字段之后的索引全部失效。索引字段作为查找条件时,没有按照建立索引的字段顺序。使用!=或<>的时候无法使用索引会导致全表扫描。使用 is null或 is not null 也无法使用索引。使用like时,通配符(%)在左边或在两边时,索引失效,会变成全表扫描。字符串不加单引号索引失效。少用or,用它连接时会索引失效。如何避免索引失效不要将索引字段作为范围查找的条件。尽可能索引字段全值匹配。最佳左前缀法则:如果索引了多个列,要遵守
2020-06-09 21:39:12 226
原创 MySQL优化之explain的使用
explain是什么使用关键字explain可以模拟MySQL优化器是如何执行SQL查询语句的,从而分析查询语句或是表结构的性能瓶颈。怎么用explain + SQL语句能干嘛1.根据id字段查看表的读取顺序:id相同从上往下顺序执行。i如果是子查询,id序号会递增,id值越大优先级越高,越先被执行。derived:衍生。图片中的含义表示id=2的查询结果为衍生的虚表,用于其他查询的引用。总结:id如果相同,可以认为是一组,从上往下顺序执行;在所有组中,id值越大,优先级越高,越先执行。
2020-06-09 15:36:42 158
原创 Linux之使用命令记录
chown username filename //修改文件所有者chgrp groupname filename //修改文件所有组tar -zxvf filename -C destinationPath //解压文件到目的路径mv //移动或重命名文件cd //切换路径cd -P //切换到硬连接目录(软连接类似于windons的快捷方式,硬连接是实际指向的路径)basename //获取文件名dirname //获取文件上级目录的绝对路径rm -r //递归删除文件touch //
2020-05-28 23:12:37 104
原创 HBase之数据真正的删除时间
1.flush: 删除未被刷写的被覆盖或有删除标记的数据。删除标记不会删,因为不知道hdfs中是否有被此删除标记作用的数据。2.majorCompact: 多个文件加载到内存,将一个 Store 下的所有的 HFile 合并成一个大 HFile,并且会清理掉过期和有删除标记的数据。数据删除完毕后再删除删除标记。...
2020-05-26 17:04:44 503
原创 HBase之RegionSplit
为什么要切分region?防止表的region过大影响遍历效率。默认情况下,每个 Table 起初只有一个 Region,随着数据的不断写入,Region 会自动进行拆分。刚拆分时,两个子 Region 都位于当前的 Region Server,但处于负载均衡的考虑,HMaster 有可能会将某个 Region 转移给其他的 Region Server。Region Split 时机:1.当1个region中的某个Store下所有StoreFile的总大小超过hbase.hregion.max.
2020-05-26 17:01:01 230
原创 HBase之RegionCompact
为什么要合并region?由于写缓存中的store(列族存储文件)每次刷写都会产生一个storeFile(hdfs上的列族存储文件),同一条数据的不同版本或不同标记可能分布在不同的storeFile中,每次查询数据时需要遍历多个storeFile。为了减少hdfs上storeFile的个数,以及清理掉过期和删除的数据,会进行storeFileCompact。Compaction 分为两种,分别是 Minor Compaction 和 Major Compaction。Minor Compaction会
2020-05-26 16:54:02 280
原创 HBase之读数据流程
1.客户端访问zookeeper,获取hbase:meta表所在RegionServer信息。2.与对应RegionServer通信,获取meta表,根据读请求参数查询出目标数据在哪个RegionServer中的哪个Region中。3.与目标RegionServer通信,从写缓存、读缓存和从hdfs上下载到内存的文件中查询目标数据,将同一条数据的不同版本或不同类型合并。4.将从hdfs文件中读取到的数据缓存在BlockCache(读缓存),缓存大小有限,采用LRU(最近最少使用)算法清理数据。5.将
2020-05-26 12:02:26 146
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人