自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据仓库建设Best Pratice学习

学前准备数据仓库是什么?从字面上理解,说白了就是把数据存在一个地方,类似于现实生活中的仓库,之所以叫数据仓库,也是由于它的一些特性数据仓库的作用,可以分为以下几点: 存储:数据仓库将接收和存储来自多个数据源的数据。 处理:ETL。 访问:为企业的分析和决策提供支持。 数据仓库的特点:面向主题,基本的主题比如销量、用户。而普通数据库一般面向事务,比如用户下订单、用户注册登录 数据仓库是集成的,数据来源于分散的操作型数据,将数据进行ETL之后才能进入数据仓库学习

2021-12-26 22:59:15 1354

原创 软技能-代码之外的生存指南读后感 生产力篇

专注真正的专注是什么,回想一下自己闷头工作,忘记周围的人和事,为了解决一个问题忘记了吃饭和喝水,进入了心流状态,在这种状态下生产力非常高使用意志力逼迫自己将注意力保持在手中的事情,一开始很痛苦,但熬过前十分钟后,就有足够的冲量推动进入专注状态生产力提升计划其实就是拆解大计划为小计划,先指定季度计划,再拆解为月计划-周计划-日计划定额工作法挑选一些重复去做的工作,设定一个定额,明确一个周期要完成什么,做出一个承诺,这个承诺很重要,一定要完成,否则计划不会成功。开始的时候承诺可以小一点,

2021-12-26 10:15:57 1511

原创 软技能-代码之外的生存指南读后感 学习篇

如何自学如果想成为最好的程序员,就必须懂得如何自学剖析自学过程回想一下,上次自学效率很高是什么时候?我近几年在玩一种卡牌游戏,叫做杀戮尖塔,游戏有四种职业,每个职业有近80张卡牌,我根本没有有意识地去记,就完全记住并熟练运用各种卡牌,通过这个例子可以分析我高效自学的特点:感兴趣,好奇心使我轻而易举地记住了这么多信息 实践的优先级很高,看完所有知识点再去实践是低效的,谁玩游戏会先去看攻略,再下载游戏打开呢?一定要先实践,在实践中积累的问题,立刻回到书本中去,你就有强烈的冲动去消化吸收其中的内

2021-12-26 09:20:28 1815

原创 软技能-代码之外的生存指南读后感 自我营销篇

在软件开发行业,营销的名声并不好,很多人会直接把营销和骗局、夸大效果画等号其实我们每个人在职场中都有个自己的人设,这个人设决定了别人怎么看待你,以及上级需要你做什么样的工作,这个人设在我们入职一段时间后往往会成为一个固定印象,上级会认为你就适合做这个,从而导致你一直在做重复性的工作。试想一下,你在工作中不断地自我提升,做好一件件工作,提升自己的技能,但英雄无用武之地,酒香也怕巷子深,适当的自我营销,打破他人的固有印象,让希望得到你服务的人和你自己连接起来,为他人提供价值,这就是自我营销的重要之处,也是突

2021-12-25 16:13:24 312

原创 软技能-代码之外的生存指南读后感 职业篇(2)

假装自己能成功作为程序员,总有遇到困难的时候,所有选择留下来与困难作斗争的人,是真的对自己克服困难的信心十足吗?并不是,但他们中有很多人都有一个共同特点——假装自己能成功,当他们在假装自己能成功时,是在心理暗示自己那样行事:你仿佛已经具备了成功完成任务的技能和天分 你仿佛已经成为了自己想成为的那类人 仿佛战斗已经结束,你已经大获全胜,因为你知道自己如果坚持下去,胜利就在眼前 你仿佛已经对即将踏上的未知道路驾轻就熟其实就是心理暗示自己能行,即使是在自己能力远远达不到的时候,也要有一种能够客服一

2021-12-25 15:14:16 227

原创 软技能-代码之外的生存指南读后感 职业篇(1)

这是一本从人的角度而非从技术角度来关注程序员的书,书中论述的内容既涉及生活习惯,又包括思维方式,目前只读了40页,从中也悟出了一点道理,记录在这像企业一样思考为了谋生一头扎进写代码的世界,那其实和产业线工人没什么区别。只有把自己当做一个企业去思考,才能做出良好的商业决策,其实可以把自己当做是甲方,一个软件开发的企业,而公司是我的客户。作为一个企业,我能提供的服务就是创建软件,所以我需要做到以下几点专注于我提供的服务 想方设法提升我的服务 思考我能为哪些客户提供服务? 集中精力成为一位专业.

2021-12-25 11:00:43 325

原创 事实表设计步骤

采用四步设计方法1. 选择业务过程以及确定事实表类型比如淘宝的订单流转的业务过程有四个:创建订单,买家付款,卖家发货,买家确认收货明确了业务过程后,根据具体业务需求来选择与维度建模有关的业务过程。比如买家付款这个业务过程,那么事实表应只包括买家付款这一个业务过程的单事务事实表总而言之就是选择了哪些业务过程,那么所建立的事实表应为包含了所有业务过程的累积快照事实表 ...

2021-07-17 18:24:15 977

原创 事实表设计之事实表特性

事实表特性事实表是数据仓库维度建模的核心事实表中一条记录所表达的业务细节程度被称为粒度度量业务过程的事实,有可加性,半可加性,不可加性三种类型事实表设计原则尽量包含所有与业务过程相关的事实 只选择与业务过程相关的事实,比如下单这个过程,不应出现支付金额,因其属于支付过程 分解不可加事实为可加的组件,比如折扣率,可分解成原始价格与优惠价格 选择维度和事实之前必须先声明粒度,粒度定义得越细越好 同一个事实表中不能有多个不同粒度的事实,比如一次购物车多个商品下单,不应当存在订单总价的字

2021-07-13 23:51:40 307

原创 维度建模之行为维度

HBase就是谷歌bigdata论文中bigtable的实现,相比hdfs和hive,它可以实时读写,并且是nosql数据库系统rowkey是hbase的主键,一般通过rowkey和主键的range来检索数据主要用来存储结构化和半结构化的松散数据,hbase表的特点大:一个表可以有上十亿行,上百万列 面向列:面向列(族)的存储和权限控制,列(族)独立检索。 稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏。 不支持事务 不支持SQL 不支持Join..

2021-07-13 23:28:43 993

原创 正确使用Impala的invalidate metadata与refresh语句

正确使用Impala的invalidate metadata与refresh语句https://www.jianshu.com/p/378060e1c509看了下文章, 基本是官方文档的翻译https://impala.apache.org/docs/build/html/topics/impala_invalidate_metadata.html总结:如果数仓中发生了增删表或改变表结构的行为,如create table、drop table、alter table add column等,就使用

2021-04-01 14:12:53 215

转载 [转]HBase底层原理(多维度分析)

先上HBase的系统架构图系统架构是不是看的N脸懵圈不用担心,相信看了我下面的细化分析,肯定能让你恍然大悟~HBase主要分为以下几个部分组成:Client:也就是我们所谓的"客户端",Client作为访问数据的入口,包含访问hbase的API接口,维护着一些cache(高速缓存存储器)来加快hbase的访问。Zookeeper:1.zoo...

2021-03-07 21:13:45 235

原创 数仓笔记

维度表一般是对事实的描述信息。每一张维表对应现实世界中的一个对象或者概念。 例如:用户、商品、日期、地区等。事实表事实表中的每行数据代表一个业务事件(下单、支付、退款、评价等)。“事实”这 个术语表示的是业务事件的度量值(可统计次数、个数、件数、金额等),例如,订单事件中的下单金额。数据仓库建模ODS 层针对 HDFS 上的用户行为数据和业务数据,我们如何规划处理?(1)保持数据原貌不做任何修改,起到备份数据的作用。(2)数据采用压缩,减少磁盘存储空间(例如:原始..

2020-09-12 23:26:54 206

转载 Spark SQL / Catalyst 内部原理 与 RBO

Spark SQL 架构Spark SQL 的整体架构如下图所示从上图可见,无论是直接使用 SQL 语句还是使用 DataFrame,都会经过如下步骤转换成 DAG 对 RDD 的操作Parser 解析 SQL,生成 Unresolved Logical Plan 由 Analyzer 结合 Catalog 信息生成 Resolved Logical Plan Optimizer根据预先定义好的规则对 Resolved Logical Plan 进行优化并生成 Optimized Logic

2020-09-10 15:16:48 332

原创 spark sql

spark内存计算框架1.sparksql概述1.1 sparksql的前世今生Shark是专门针对于spark的构建大规模数据仓库系统的一个框架Shark与Hive兼容、同时也依赖于Spark版本Hivesql底层把sql解析成了mapreduce程序,Shark是把sql语句解析成了Spark任务随着性能优化的上限,以及集成SQL的一些复杂的分析功能,发现Hive的MapReduce思想限制了Shark的发展。最后Databricks公司终止对Shark的开发决定单独开发一个框架,不

2020-09-10 14:48:53 935

转载 Spark调优

1、开发Spark项目的经验准则   (1)尽量少生成RDD;   (2)尽量少对RDD进行算子操作,如果有可能,尽量在一个算子里面实现多个功能;   (3)尽量少使用发生Shuffle操作的算子,如GroupByKey、ReduceBy...

2020-09-10 14:22:18 285

转载 HDFS写文件

概述开始之前先看看其基本属性,HDFS(Hadoop Distributed File System)是GFS的开源实现。特点如下:能够运行在廉价机器上,硬件出错常态,需要具备高容错性 流式数据访问,而不是随机读写 面向大规模数据集,能够进行批处理、能够横向扩展 简单一致性模型,假定文件是一次写入、多次读取缺点:不支持低延迟数据访问 不适合大量小文件存储(因为每条元数据占用空间是一定的) 不支持并发写入,一个文件只能有一个写入者 不支持文件随机修改,仅支持追加写入HDFS中的

2020-09-07 16:20:28 257

原创 Spark任务提交流程

Standalone模式的启动流程submit以后,和Master通信,向Master注册生成Driver Driver和Master申请资源,Master和Worker通信,生成Executor Executor对Driver反向注册 在Driver端生成DAGScheduler和TaskScheduler 运行main函数,在运行到action算子时,DAGScheduler通过宽依赖划分Stage,生成有向无环图 每个Stage生成一个TaskSet,交给TaskSche...

2020-09-07 16:03:05 222

原创

1.为什么用zookeeper2.spark Shuffle机制?3.sortShuffle与HashShuffle区别是什么?4.spark中的RDD的Partition数是由什么决定的?5.Direct和Receiver的区别在哪?6.spark内存模型是怎样的?7.checkpoint是怎么做的,或者说使用在什么地方?8.数据仓库模型是怎样的?9.简单介绍下flink任务提交流程10.你们数据传输之间的接口大体是如何设计的?11.scala和java有什么区别?12.spark.

2020-09-07 11:49:15 564

转载 Spark SQL 之 Join 实现

1. 简介Join是SQL语句中的常用操作,良好的表结构能够将数据分散在不同的表中,使其符合某种范式,减少表冗余、更新容错等。而建立表和表之间关系的最佳方式就是Join操作。Join连接是大数据处理的重要手段,它基于表之间的共同字段将来自两个或多个表的行结合起来。如今Spark SQL(Dataset/DataFrame)已经成为Spark应用程序开发的主流,作为开发者,我们有必要了解Join在Spark中是如何组织运行的。2. Join的基本要素如下图所示,Join大致包括三个要素:Join方

2020-09-07 10:26:53 219

转载 HBase RowKey设计

为什么Rowkey这么重要RowKey 到底是什么我们常说看一张 HBase 表设计的好不好,就看它的 RowKey 设计的好不好。可见 RowKey 在 HBase 中的地位。那么 RowKey 到底是什么?RowKey 的特点如下:类似于 MySQL、Oracle中的主键,用于标示唯一的行; 完全是由用户指定的一串不重复的字符串; HBase 中的数据永远是根据 Rowkey 的字典排序来排序的。RowKey的作用读写数据时通过 RowKey 找到对应的 Region; MemS

2020-09-07 10:09:50 154

转载 寄存器的基本原理

D触发器,一个数据输入,一个数据输出,一个时钟输入。触发器工作原理:相当于照相机每十秒钟自动按下快门,按下快门后,1秒后传输到输出端,按快门前后,输入端数据不能有变化,称为setup/hold时间实际的D触发器32个 D触发器相连构成一个寄存器...

2020-09-03 22:52:24 1070

转载 站点最短路径

# -*- coding: utf-8 -*-# @Time : 2019/4/11# @Author : Zhao huilin# @FileName: dijkstra.py# @Software: PyCharm# @Blog :https://me.csdn.net/nominiorimport numpy as np graph_chain = { 'a': {'b': 7, 'c': 9, 'f': 14}, 'b': {'a': 7, 'c': .

2020-09-03 14:35:30 95

原创 spark的主要知识点

1. spark的runtime这个主要是standalone模式下的master和worker,executor,driver,再加上yarn模式下的resourcemanager和nodemanager。要了解一个spark应用提交的过程,也就是driver和executor在集群管理器内部启动的过程,然后就是rpc过程,各个角色的作用。高手的问题就是如何给两者分配合适内存,然后executor执行task倾斜的表现及如何解决。这些都在星球里分享过了。然后如何对executor的存活挂掉、新增进

2020-09-03 10:52:13 77

转载 Spark的Shuffle(一) - SortShuffleWriter

上一篇“shuffle的一些概念”中提到了三种shuffle的方式,此处先来分析下SortShuffleWriter,结合代码一起调试下看看它内部到底是如何运行的。选择带有聚合的算子调试就行了,例如对一个pairRDD进行reduceByKey操作,然后就可以跳到对应的源码里面了,可以看出reduceByKey算子使用的是确实是SortShuffleWriter:直接跑到运行Task的代码中看它到低是如何进行Shuffle的。Ps:这里我有个疑问,我代码里面并没有选择Kryo的序列化方式,为什么这里

2020-09-03 10:32:11 194

转载 并发和并行,异步与多线程区别

1、并发和并行的区别可由上图形象指出两者的区别:1)定义:并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。并行:在操作系统中,一组程序按独立异步的速度执行,无论从微观还是宏观,程序都是一起执行的。来个比喻:并发和并行的区别就是一个人同时吃三个馒头和三个人同时吃三个馒头;在单CPU系统中,系统调度在某一时刻只能让一个线程运行,虽然这种调试机制有多种形式(大多数是时间片

2020-09-03 10:30:45 281

转载 多线程

多线程多线程是程序设计的逻辑层概念,它是进程中并发运行的一段代码。多线程可以实现线程间的切换执行,多线程类似于同时执行多个不同程序,多线程运行有如下优点:使用线程可以把占据长时间的程序中的任务放到后台去处理。 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度 程序的运行速度可能加快 在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下我们可以释放一些珍贵的资源如内存占用等等。线程在执行过程中与进程

2020-09-03 10:28:40 75

原创 hive 创建外部表

create table test_data(columnNamebigint) stored as parquet;load data inpath 'hdfsPath' into table test_data partition(state='Sichuan', city='Chengdu');

2020-08-19 10:07:30 836

转载 Spark的Shuffle之BypassMergeSortShuffleWriter

    来介绍一下最后一种Shuffle的方式ByPassMergeSortShuffleWriter,它和已经废弃的HashShuffleWriter类似,区别在于map端的多个文件会被汇总成一个文件,这样就大大减少了磁盘IO的压力。 ByPassMergeSortShuffleWriter...

2020-08-06 10:42:56 693

空空如也

空空如也

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

TA关注的人

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