自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

数仓老六

21天从入门到放弃数仓

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

原创 数据仓库元数据管理

数据仓库元数据管理是数据仓库中至关重要的一环,它涉及到对数据仓库中的元数据进行收集、存储、组织、查询、维护和安全管理等方面的工作。本文将介绍数据仓库元数据管理的定义、分类、应用、价值、管理方案、具体实施和挑战,以帮助读者更好地理解和应用数据仓库元数据管理。数据仓库元数据管理的管理方案包括元数据收集和注册、元数据存储和组织、元数据查询和检索、元数据维护和更新、元数据安全和权限管理等方面。数据仓库元数据是描述数据仓库中数据的数据,包括数据的结构、定义、来源、质量、变化等信息。

2024-04-16 15:05:31 640

原创 数据治理:构建企业数据资产的基石

数据治理的定义有很多。国际数据管理协会(DAMA)给出的定义是:“数据治理是对数据资产管理行使权力和控制的活动集合。国际数据治理研究所(DGI)给出的定义是:“数据治理是一个通过一系列与信息相关的过程来实现决策权和职责分工的系统,这些过程按照达成共识的模型来执行,该模型描述了谁(Who)能根据什么信息,在什么时间(When)和情况(Where)下,用什么方法(How),采取什么行动(What)。在笔者看来,所有为提高数据质量而展开的技术、业务和管理活动都属于数据治理范畴。

2024-03-10 16:21:46 899

原创 大数据SQL面试题 001

本文详细解析了在 Hive SQL 面试中常见的连续登录天数计算问题,并提供了相应的解决方案。​题目要求计算每个用户的连续登录天数。连续登录天数是指用户连续登录的天数,即从第一天登录开始,没有中断地登录的天数。这个问题涉及到对登录日志表的排序和条件判断,需要使用 Hive SQL 的窗口函数和条件表达式来解决。需要对 Hive SQL 的窗口函数和条件表达式有一定的了解,并能够将它们应用到实际的数据分析问题中。Hive SQL 的日期函数:在计算连续登录天数时,需要使用日期函数来进行日期的计算和比较。

2024-02-27 19:52:04 252

原创 数据建设赋能业务增长

数据仓库(Data Warehouse)是一个用于集成、存储和管理大量结构化和非结构化数据的系统。它是一个面向主题的、集成的、稳定的、可变的和可查询的数据集合,用于支持企业的决策制定和业务分析。数据仓库的设计和构建旨在满足以下目标:1. 集成数据:数据仓库从多个源系统中提取、转换和加载数据,将其集成到一个统一的数据模型中。这样可以消除数据孤岛,使得企业可以从一个统一的视角来分析和理解数据。2. 支持主题分析:数据仓库以主题为中心,将数据组织成一系列主题区域,如销售、客户、产品等。

2024-01-13 15:22:12 884

原创 数据仓库规范

数据仓库规范是指在设计、开发和维护数据仓库时应遵循的一系列规则和准则。这些规范旨在确保数据仓库的一致性、可靠性和可维护性,以支持有效的数据分析和决策制定。数据仓库规范通常包括以下方面:1. 数据模型规范:定义数据仓库的逻辑和物理数据模型,包括实体、属性、关系和约束等。这些规范有助于确保数据的一致性和完整性。2. 数据质量规范:定义数据质量的标准和度量指标,以确保数据的准确性、完整性和一致性。3. 数据加载规范:定义数据从源系统到数据仓库的加载过程,包括数据提取、转换和加载(ETL)的规则和流程。

2023-12-07 18:16:15 460

原创 hive函数源码之posexplode

UDTF(User-Defined Table-Generating Functions)是一进多出函数,如hive中的explode()、posexplode()函数。explode()函数可以将数组(array类型)的元素分隔成多行,或将映射(map类型)的元素分隔为多行和多列。工作中经常会用到这个函数,今天我们这次来分析下posexplode()函数源码。

2023-11-14 17:53:19 135

原创 数据仓库主题

建设数据仓库是一种方法论,它并不是一成不变的“定理”。因此,我们可能无法找到完全符合自己实际公司业务的“公式”。为了解决这个问题,我们需要学习这些方法论,并结合自己公司实际的业务场景来实现。只要能够有序地管理数据,同时高效地帮助数据分析并实现业务价值,就不必过分追求“行业标准”。

2023-10-13 11:14:26 235

原创 hive之decimal数据类型相乘结果为null

decimal类型使用乘法过程中尽量控制下精度。结果值部分为null值代码。

2023-09-11 16:44:56 217

原创 Hive UDAF开发指南

UDAF(User-Defined Aggregate Function)是用户自定义聚合函数的缩写。在大数据处理框架中,如 Apache Hive、Apache Flink、Apache Spark 等,UDAF 允许用户扩展内置聚合函数,以实现特定的数据处理需求。它们通常用于对一组数据进行计算,然后返回一个汇总结果。UDAF 的主要特点:1. 可定制性:用户可以根据自己的需求编写自定义聚合函数,实现特定的数据处理逻辑。

2023-08-15 11:13:44 380

原创 Hive UDF开发指南

UDF(user defined functions)是用户定义函数,UDF操作作用于单个数据行,并且产生单个数据行作为输出。大多数函数都属于这一类(比如数学函数和字符串函数)。实现UDF需要继承特定类UDF或GenericUDF二选一。apache.hadoop.hive.ql.exec.UDF,处理并返回基本数据类型,int、string、boolean、double等;(也可以返回复杂数据类型)

2023-07-14 17:08:45 909

原创 Tez 简介

1.1 Tez 是支持 DAG 作业的开源计算框架,它可以将多个有依赖的作业转换为一个作业从而大幅提升 DAG 作业的性能。Tez UI界面包括应用详情、DAG有向无环图、Vertices信息、任务详情等信息。1.2 Tez 计算引擎结构更加类似于Spark,但却有所区别,二、Tez UI界面。

2023-06-08 16:02:02 2501

原创 hive隐式转换

hive允许的隐式转换

2023-05-08 14:20:31 174

原创 hive源码之explode函数

UDTF(User-Defined Table-Generating Functions)是一进多出函数,如hive中的explode()、posexplode()函数。explode()函数可以将数组(array类型)的元素分隔成多行,或将映射(map类型)的元素分隔为多行和多列。工作中经常会用到这个函数,今天我们这次来分析下explode()函数源码。不管是hive还是mapreduece,都是比较复杂的一整块,我们在学习的时候不妨“浅尝辄止”。

2023-04-10 11:55:16 1066

原创 hive 字段类型变更级联

踩坑:数仓的分区表,由于需求需要进行字段类型变更、新增字段等。例如要把int类型的字段改为bigint,直接执行的以下语句:出现的问题:之后的分区数据可以正常的显示,历史数据查出来的数据为0或者null,无论insert overwrite重新导数据、把有问题的分区数据删掉都不能正常显示。

2023-03-06 18:27:46 486

原创 hive源码之concat函数

大家好,我是老六。今天和大家一起来看下hive中内置函数concat的源码。hive函数官方文档:LanguageManual UDF - Apache Hive - Apache Software Foundation四、学习总结

2023-02-07 14:43:34 746

原创 hive序列化格式报错(OrcSerdeRow)

首先,我们需要明确这个数据持久化的大体流程是什么样的。从图中可知,序列化器Serializer的输出数据,就是OutputFormat的输入数据。Write过程:Serializer将列对象转化为纪录(),OutputFormat将纪录()格式化为输出流(OutputStream)。Read过程:InputFormat将输入流(InputStream)分割成纪录(),Deserializer将纪录()解析成列对象。

2023-01-03 17:48:21 335

原创 Hive中rlike、like、regexp区别与使用详解

like与rlike的使用对比总结:rlike功能和like功能大致一样,like是后面只支持简单表达式匹配(_%),而rlike则支持标准正则表达式语法。所以如果正则表达式使用熟练的话,建议使用rlike,功能更加强大。所有的like匹配都可以被替换成rlike。反之,则不行。但是注意:like是从头逐一字符匹配的,是全部匹配,但是rlike则不是,可以从任意部位匹配,而且不是全部匹配。

2022-12-05 17:00:05 12635 1

原创 ORC数据切分策略

当ETL策略生效时,driver读取file footer等信息,若其footer(用于描述整个文件的基本信息、表结构信息、行数、各个字段的统计信息以及各个Stripe的信息)较大,可能会导致driver端OOM,因此这类表的读取建议使用BI策略。对于一些较小的尤其有数据倾斜的表(这里的数据倾斜指大量stripe存储于少数文件中),建议使用ETL策略。混合模式读取所有文件的页脚,如果文件少于预期的mapper计数,如果平均文件大小小于默认的HDFS块大小,切换到每个文件生成1个split。

2022-10-31 10:45:03 522

转载 ORC存储结构

ORC是列式存储,有多种文件压缩方式,并且有着很高的压缩比。文件是可切分(Split)的。因此,在Hive中使用ORC作为表的文件存储格式,不仅节省HDFS存储资源,查询任务的输入数据量减少,使用的MapTask也就减少了。提供了多种索引,row group index、bloom filter index。ORC可以支持复杂的数据结构(比如Map等)

2022-10-31 10:44:05 1001

原创 hive源码之decimal乘法精度和标度计算

在数据开发中,对于需要精确保留的字段我们一般都会用decimal类型来进行存储,老六通过源码研究了decimal乘法精度和标度计算原理,我们一起来看下decimal乘法精度和标度到底计算的吧。

2022-09-30 14:53:48 3301 2

原创 hive源码之get_json_object

大家好,我是老六。在数据开发中,我们有大量解析json串的需求,我们选用的UDF函数无非就是:get_json_object和json_tuple。但是在使用get_json_object函数过程中,老六发现get_json_object无法解析key为中文的key:value对。带着这个问题,老六通过源码研究了get_json_object这个函数,探索其中奥秘。

2022-09-12 10:00:00 11737 2

转载 Hive SQL编译过程之语法树的生成

HiveQL是一个非标准的sql语言,实现了sql的大部分规范,同时添加了一些hive独有的特性。Hive使用antlr3定义HiveQL语言。 1.1 antlr3简介 ANTLR(ANother Tool for Language Recognition)是一款功能强大的语言构建工具,提供了词法分析、语法分析等功能。用户编写语言的词法规则和语法规则,然后通过antlr提供的运行时库将语言转换成抽象语法树。antlr支持java、c、c++、Python等多种语言。Antlr3是antlr的第..

2020-12-15 20:12:49 1469 1

原创 大数据面试之手撕SQL题一

大数据面试最常见sql算法题之一hive sql实现查询连续n天登陆的用户

2020-11-03 11:22:49 668

原创 数据仓库之维表-缓慢变化维

数据仓库的重要特点之一是反映历史变化,所以如何处理维度的变化是维度设计的重要工作之一。缓慢变化维的提出是因为在现实世界中,维度的属性并不是静态的,它会随着时间的流逝发生缓慢的变化 。与数据增长较为快速的事实表相比,维度变化相对缓慢。 在一些情况下,保留历史数据没有什么分析价值;而在另一些情况下,保留历史数据将会起到至关重要的作用。在 Kimball 的理论中, 有三种处理缓慢变化维的方式,下面通过简单的实例进行说明。 第一种处理方式 :重写维度值。采用此种方式,不保留历史数据,始终取...

2020-10-27 20:40:48 1493 1

转载 Hive SQL必看!!!编译过程详解

Hive是基于Hadoop的一个数据仓库系统,在各大公司都有广泛的应用。美团数据仓库也是基于Hive搭建,每天执行近万次的Hive ETL计算流程,负责每天数百GB的数据存储和分析。Hive的稳定性和性能对我们的数据分析非常关键。在几次升级Hive的过程中,我们遇到了一些大大小小的问题。通过向社区的 咨询和自己的努力,在解决这些问题的同时我们对Hive将SQL编译为MapReduce的过程有了比较深入的理解。对这一过程的理解不仅帮助我们解决了 一些Hive的bug,也有利于我们优化Hive SQL.

2020-10-19 15:01:08 693

原创 Hive 窗口函数及其搭配分析函数

hive 窗口函数over(partition by cookieid order by createtime)

2020-08-24 20:21:44 200

原创 Hive SQL优化一之DISTINCT

我们利用Hive对嵌套语句的支持,将原来一个MapReduce作业转换为两个作业,在第一阶段选出全部的非重复id,在第二阶段再对这些已消重的id进行计数。这样在第一阶段我们可以通过增大Reduce的并发数,并发处理Map输出。在第二阶段,由于id已经消重,因此COUNT(*)操作在Map阶段不需要输出原id数据,只输出一个合并后的计数即可。这样即使第二阶段Hive强制指定一个Reduce Task,极少量的Map输出数据也不会使单一的Reduce Task成为瓶颈。改进后的SQL语句如下:SELE...

2020-08-20 20:35:18 648

原创 Hive SQL骚断腿操作之一

grouping sets

2020-08-11 21:52:05 160

原创 Hive常用优化

1、抓取策略2、explainextended显示执行计划3、并行执行(不能有依赖关系)sethive.exec.parallel=true;开启并行,开启后默认8个hive.exec.parallel.thread.number设置并行个数4、严格模式(限制查询条件)sethive.mapred.mode=strict5、排序优化orderby全排序只有一个reducesortby单个reduce排序distributeby分区排序,...

2020-07-22 21:35:16 172

转载 Hive最全入门

目录前言一、Hive简介二、Hive架构三、基本数据类型四、DDL语法五、DML语法六、HQL语法七、JOIN八、排序九、自定义函数十、MapReduce执行过程十一、性能优化十二、后记参考资料前言我写这篇文章的目的是尽可能全面地对Hive进行入门介绍,这篇文章是基于hive-1.0.0版本介绍的,这个版本的Hive是运行在MapReduce上的,新的版本可以运行在Tez上,会有一些不同。Hive是对数据仓库进行管理和分析...

2020-07-14 17:24:51 629

原创 二叉树后序遍历非递归方法

后序遍历:对于节点cur可以分情况讨论1. cur如果是叶子节点,直接输出2. cur如果有孩子,且孩子没有被访问过,则按照右孩子,左孩子的顺序依次入栈3. cur如果有孩子,而且孩子都已经访问过,则访问p节点import java.util.*;public class Solution { public ArrayList<Integer> p...

2019-05-09 22:51:48 270

空空如也

空空如也

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

TA关注的人

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