日拱一卒 Vol.005
Hive基础与架构什么是Hive ?Hive 是基于Hadoop的一个数据仓库工具,可以将结构化和半结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能。
注意:
Hive本质是将HDFS转换成MapReduce的任务进行运算,底层由HDFS来提供数据存储。
Hive的元数据存储在一个关系型数据库中,例如MySQL或PostgreSQL。我们通过SQL语言来访问和管理这个数据库。
HBase的元数据(特别是核心的元数据表)虽然其底层数据持久化在HDFS上,但访问和管理这些元数据是通过HBase自身的机制,而不是直接读写HDFS文件。
Hive的优点和缺点Hive是一种基于Hadoop的工具,它提供了SQL界面和查询语言来查询和分析存储在Hadoop上的大规模结构化数据。
优点:
简化了复杂MapReduce任务:对于熟悉SQL而不是编写MapReduce代码的用户来说,可以更容易地使用SQL语法进行大规模数据分析。
支持高度可扩展性:可以运行在一个集群上,并能够以并行方式执行查询,在海量数据情况下保持良好地性能。
缺点:
延迟较高:相对于直接使用Hadoop的原生 ...
日拱一卒 Vol.004
数据分析方法与业务理解
问题背景:
假设你是一家国内头部视频平台(可类比B站、腾讯视频)的数据分析师。最近,产品经理发现平台的“用户日均使用时长”这一核心指标在过去连续3个季度呈现缓慢下降趋势。下降幅度不大(累计约5%),但趋势非常持续和明确。
业务方诉求:
业务团队希望数据团队能深入分析,诊断出导致时长下降的关键原因,并给出可落地的优化建议。他们只有一些模糊的假设,比如“是不是短视频冲击?”或“是不是内容质量下降了?”,但没有数据支撑。
你的任务:
请你系统地阐述你将如何开展这次分析项目。请覆盖以下要点:
分析思路与框架:你会使用什么样的分析框架来拆解这个复杂问题?(比如,从哪些维度切入?)
关键指标定义:你会定义哪些细化的指标来辅助诊断?
数据验证方法:你会如何设计分析来验证或推翻业务方的假设?
预期产出:你最终会向业务方交付什么样的分析结论或数据产品?
科学分析体系:三步诊断法第一步:问题确认与宏观描述目标:确保我们理解的问题是真实的、全面的,而不是数据错觉或片面问题。
确认数据准确性:
数据源是否可靠?埋点是否有变更?数据上报流程是否有问题?(例如:某个版本更新后,Ap ...
日拱一卒 Vol.003
一、Doris是什么?—— 宏观定位Apache Doris是一个基于MPP架构的、高性能、实时的分析型数据库。
通过拆解这个定义,我们可以抓住它的核心:
MPP架构:这是Doris高性能的基石。大规模并行处理意味着它将数据和计算任务分布到集群的多个节点上,这些节点同时工作,最终将结果汇总返回。就像一群工人同时组装一台汽车,而不是一个人完成所有工作。
分析型数据库:它与我们熟知的MySQL这类事务型数据库有本质区别。
目标不同:OLTP处理大量简单的、高并发的短事务(如订单支付、账户查询);而Doris所属的OLAP则专注于复杂的分析查询(如“过去一年每个季度各个品类的销售总额排名”)。
读/写模式不同:OLTP是“读写均衡”,OLAP是“读多写少”,一次写入,多次复杂查询。
高性能与实时:Doris的核心优势。它能够对海量数据(PB级别)进行亚秒级的查询响应,并支持高并发的点查询和复杂报表。数据写入后可立即用于查询,实现了“实时分析”。
简单来说,Doris是为大数据时代的“决策支持系统”而生的引擎,旨在让分析师和决策者能够极其快速地从海量数据中获取洞察。
二、核心 ...
日拱一卒 Vol.002
数据仓库与架构设计
问题:
假设你要为一家快速发展的跨境电商公司设计数据仓库的维度模型。业务非常复杂,涉及用户、商品、订单、营销活动、供应链等多个数据域。你会如何着手进行模型设计?请阐述你的核心设计思路、模型层次划分,并举例说明如何处理“商品价格”这种随时间变化的维度(即缓慢变化维问题)。
回答:
当前面临的问题是为一家夸奖电商公司设计数据仓库的维度模型,由于其业务非常复杂,涉及到用户、商品、订单、营销活动、供应链等多个业务过程。首先应该采用的是分而治之的思想,首先确定要建设的数据域有哪些?将业务过程划分进入对应的数据域中处理。针对每一个数据域进行数据仓库的建设工作。比如商品单独划分为商品域,数仓的整体架构如下:ods层(贴源数据,对业务系统的数据进行完整的保留,通常是从mysql同步到hive侧的,不经过任何加工的原始数据),fact层(事实层,对业务过程进行抽象构建维表与事实表,通常采用星型建模法),topic层(主题层,对数据进行主题的建设,相关fact数据汇集在此),comp层(组件层,对不同业务过程进行抽象,其主表可以是fact层的表也可以是topic层的表,计算各个主题下的 ...
日拱一卒 Vol.001
问题:
假设你负责电商交易数据的分析,现有以下三张核心表:
orders(订单表):order_id, user_id, order_time, total_amount
order_items(订单明细):item_id, order_id, product_id, quantity, price
users(用户表):user_id, registration_time, city
业务需求:
计算2023年第二季度(4月-6月)每个城市的“高价值用户数”。
定义:高价值用户需同时满足以下条件:
在该季度内下单次数 ≥ 3次
该季度累计订单金额 ≥ 5000元
首次注册时间在2023年之前
请写出SQL实现,并说明你的优化思路?
12345678910111213141516171819202122232425262728SELECT u.city, COUNT(DISTINCT u.user_id) AS high_value_user_countFROM users uINNER JOIN ( -- 步骤1:在订单层聚合,先过滤出Q2的订单, ...
每日分享 Spark
一、简述什么是spark?
spark是一个计算引擎;
spark是基于内存运算的,比传统的hadoop计算引擎速度要快;
spark支持多种部署模式,单机部署、独立部署模式、yarn、mesos、k8s等;
spark可以读取多种数据存储系统或者组件数据,例如hdfs、hbase、hive等;
首先描述spark的简介,一句话概括。其次描述其特点,最后理论到实践,描述其应用场景。
简介 → 特点 → 应用场景
简介:spark由scala语言构建的、内存计算引擎,针对大规模数据集和复杂的数据处理任务,提供了高效的数据处理能力。
特点:
易用:
(数据介质自由)它可以和任何存储系统进行连接,如本地存储系统、HDFS、Hive、Hbase等;
(资源管理器自由)资源管理器可选本地模式、独立部署模式、yarn、mesos、k8s等;
(编程语言自由)spark提供了丰富的api和易于使用的编程模型;
快速:
源于其利用内存进行计算和基于RDD的弹性数据集模型;
通用:(神通广大)
批处理、流处理、交互式查询(spark sql)、机器学习(MLlib)
应用场景: ...
华为OD 机考面试题
昨天晚上参加了华为OD的机考,记录一下考试流程,顺便做个复盘。
一、华为OD机考流程
考试流程
邮箱接收考试地址
电脑网页登入,确认个人信息
开启摄像头,并拍照(考试过程全程开启)
开启全屏幕录制
手机扫描二维码,进入小程序页面(必须在这个页面停留,手机常亮,直到交卷)
开始考试(3到算法题,一共400分,分值分布100、100、150,150及格)
二、灰度图
123456789101112131415161718192021题干:黑白图像常采用灰度图的方式存储,即图像的每个像素填充一个灰阶值。256阶灰度图是一个灰阶值取值范围为0-255的灰阶矩阵,0表示全黑、255表示全白,范围内的其他值表示不同的灰度。比如下面的图像及其对应的灰阶矩阵10 10 255 34 0 1 255 8 0 3 255 6 0 5 255 4 0 7 255 2 0 9 255 211、所有数值以空格分隔2、前两个数分别表示矩阵的行数和列数3、从第三个数开始,每两个数一组,每组第一个数是灰阶值,第二个数表示该灰阶值从左到右,从上到下(可理解为将二维数组按行存储在一维矩阵中)的连续像素个数。比如 ...
每日分享 Hive
一、Hive是什么?
Hive提供了一种SQL(结构化查询)语言,可以将结构化的文件映射为一张表,查询存储在HDFS上的数据或者其他在HDFS上的文件系统,例如HBase。
优点:
操作接口采用类SQL的语法,快速开发
避免学习MapReduce,减小学习成本
支持用户自定义函数
处理大数据便捷
缺点:
执行延迟比较高,自动生成的MapReduce作业比较慢
表达能力有限,体现在迭代式算法无法表达、MapReduce数据处理流程限制,无限实现效率更高的算法
不支持记录级别的更新、插入、删除操作
二、Hive架构
用户接口(Client):CLI、JDBC/ODBC、WEBUI
元数据(Meta store):表名、表所属数据库、表的拥有者、列/分区字段、表的类型(内、外部表)、表的数据所在目录等
驱动器(Driver)
解析器:将SQL字符串转换成抽象语法树AST,一般都用第三方工具完成,比如antlr
编译器:将AST编译成逻辑执行计划
优化器:将逻辑执行计划进行优化
执行器:将逻辑执行计划转化为物理计划,例如MR/SPARK
三、Hiv ...
每日分享 Kafka
一、Kafka是什么?
Kafka 一个分布式的、多分区、多副本、多订阅者,流式数据处理的平台。它具有消息系统(发布、订阅)的能力,也有实时流式数据处理和分析的能力,我们更多偏向于把它当做消息队列系统来使用。
以时间复杂度O(1)的方式提供持久化能力,即使应对TB以上的数据也能保证常数时间复杂度的访问性能
高吞吐率,廉价商用机器也能作做到单机每秒100K条以上的消息传输
支持消息分区、及分布式消费,同时保证每个Partition内的消息顺序传输
同时支持离线数据处理和实时数据处理
支持在线水平拓展
二、相关名词解释(1)Broker 代理服务器
一个kafka代理服务器也被称之为Broker,它接收生产者发送的消息并存入磁盘。
Broker同时服务消费者拉取分区消息的请求,返回目前已经提交的消息。
(2)Topic 主题
在kafka中消息以主题(topic)来分类,每一个主题都对应一个消息队列。
(3)Partition 分区
topic物理上的分组,一个topic可以分为多个partition,每一个partition是一个有序的队列。
(4)Segment 段
par ...
八角笼中
八角笼中
生活是牢笼,也是枷锁,人这一生到底为了什么,其实就是两个字,钱和情,为了这两个字尝尽了人生的酸甜苦辣,复杂的社会,看不透的人心,放不下的责任,走不完的坎坷,越不过的无奈,撑过的日子只有自己知道,该经历的不该经历的全经历了,该忍受的不该忍受的都一一吞下了,还畏惧什么呢?
所以,你要相信,任何时候,命运给你一个比别人低的起点,是想告诉你,是让你用你的一生去奋斗出一个绝地反击的故事,破笼而出,博出生路,这个故事关于独立,关于梦想,关于勇气,关于坚忍,他不是一个水到渠成的童话,没有一点点人间疾苦,这个故事是有志者事竟成,破釜沉舟,百二秦关终属楚,这个故事是苦心人天不负,卧薪尝胆,三千越甲可吞吴 。
—— 生如野草 不屈不挠
生如野草,不屈不挠,没有伞的孩子只有努力奔跑,我们无法选择人生的起点,但可以决定人生的终点。只有登上山顶才能看到那一边的风光,剩下的只管努力与坚持,时间会给我们答案。
没有背景,也没有依靠,就是一个平凡而普通的人,想要的都只是踮起脚尖努力争取。虽然生活很难 ...


