Apache ORC

Hive SQL查询效率提升之Analyze方案的实施

风格不统一 提交于 2021-02-17 13:50:16
0.简介 Analyze,分析表(也称为计算统计信息)是一种内置的Hive操作,可以执行该操作来收集表上的元数据信息。这可以极大的改善表上的查询时间,因为它收集构成表中数据的行计数,文件计数和文件大小(字节),并在执行之前将其提供给查询计划程序。 <!-- more --> 1.如何分析表? 基础分析语句 ANALYZE TABLE my_database_name.my_table_name COMPUTE STATISTICS; 这是一个基础分析语句,不限制是否存在表分区,如果你是分区表更应该定期执行。 分析特定分区 ANALYZE TABLE my_database_name.my_table_name PARTITION (YEAR=2019, MONTH=5, DAY=12) COMPUTE STATISTICS; 这是一个细粒度的分析语句。它收集指定的分区上的元数据,并将该信息存储在Hive Metastore中已进行查询优化。该信息包括每列,不同值的数量,NULL值的数量,列的平均大小,平均值或列中所有值的总和(如果类型为数字)和值的百分数。 分析列 ANALYZE TABLE my_database_name.my_table_name COMPUTE STATISTICS FOR column1, column2, column3; 它收集指定列上的元数据

大数据学习之Hive UDF及优化23

情到浓时终转凉″ 提交于 2021-02-16 19:32:26
十一: UDF 函数 自定义函数 之前使用 hive自带函数sum/avg/max/min... 三种自定义函数: UDF:一进一出(User-Defined-Function) UDAF:多进一出 (count、max、min) UDTF:一进多出 (1)导入hive依赖包 hive/lib下。编写自定义函数 ( 2)上传 alt+p ( 3)添加到hive中 add jar /root/lower.jar; (4) 关联(注意是全类名) create temporary function my_lower as "com.itstaredu.com.Lower"; (5) 使用 select ename,my_lower(ename) lowername from empt; 十二: hive 优化 1 : 压缩 ( 1)开启Map阶段输出压缩 开启输出压缩功能: set hive.exec.compress.intermediate=true; 开启 map输出压缩功能: set mapreduce.map.output.compress=true; 设置压缩方式: set mapreduce.map.output.compress.codec=org.apache.hadoop.io.compres s.SnappyCodec; (2)开启reduce输出端压缩

【大数据】Hive学习笔记

依然范特西╮ 提交于 2021-02-15 09:58:28
第 1 章 Hive 基本概念 1.1 什么是 Hive Hive :由 Facebook 开源用于解决海量结构化日志的数据统计。 Hive 是基于 Hadoop 的一个 数据仓库工具 ,可以将 结构化的数据文件映射为一张表 ,并提供 类 SQL 查询功能。 本质是:将 HQL 转化成 MapReduce 程序 1 ) Hive 处理的数据存储在 HDFS 2 ) Hive 分析数据底层的实现是 MapReduce 3 )执行程序运行在 Yarn 上 1.2 Hive 的优缺点 1.2.1 优点 1) 操作接口采用类 SQL 语法,提供快速开发的能力(简单、容易上手) 。 2) 避免了去写 MapReduce ,减少开发人员的学习成本 。 3) Hive 的执行延迟比较高,因此 Hive 常用于数据分析,对实时性要求不高的场合 。 4) Hive 优势在于处理大数据,对于处理小数据没有优势,因为 Hive 的执行延迟比较高 。 5) Hive 支持用户自定义函数,用户可以根据自己的需求来实现自己的函数 。 1.2.2 缺点 1.Hive 的 HQL 表达能力有限 ( 1 )迭代式算法无法表达 ( 2 )数据挖掘方面不擅长 , 由于 MapReduce 数据处理流程的限制,效率更高的算法却无法实现。 2.Hive 的效率比较低 ( 1 ) Hive 自动生成的 MapReduce

Presto在大数据领域的实践和探索

半世苍凉 提交于 2021-02-13 13:57:42
小编在去年的时候,写过一篇轰动全网的文章 《你需要的不是实时数仓 | 你需要的是一款强大的OLAP数据库》 ,这篇文章当时被各大门户网站和自媒体疯狂转载,保守阅读量也在50万+UV,在这篇文章中提到过Preto,Presto作为OLAP计算领域的一员有着独特的优势和特点。 本篇文章是作者作为Presto小白时期,经过调研、线上调试、生产环境稳定运行这个过程中大量的实践经验和资料检索,沉淀下来的一个读书笔记。本文从原理入门、线上调优、典型应用等几个方面为读者全面剖析Presto,希望对大家有帮助。 我是谁?我从哪里来?要到哪里去? Presto is an open source distributed SQL query engine for running interactive analytic queries against data sources of all sizes ranging from gigabytes to petabytes. Presto allows querying data where it lives, including Hive, Cassandra, relational databases or even proprietary data stores. A single Presto query can combine data

每个大数据工程师都应该知道的OLAP 核心知识点

陌路散爱 提交于 2021-01-05 12:00:36
OLAP 系统广泛应用于 BI, Reporting, Ad-hoc, ETL 数仓分析等场景,本文主要从体系化的角度来分析 OLAP 系统的核心技术点,从业界已有的 OLAP 中萃取其共性,分为谈存储,谈计算,谈优化器,谈趋势 4 个章节。 01 谈储存 列存的数据组织形式 行存,可以看做 NSM (N-ary Storage Model) 组织形式,一直伴随着关系型数据库,对于 OLTP 场景友好,例如 innodb[1] 的 B+ 树聚簇索引,每个 Page 中包含若干排序好的行,可以很好的支持 tuple-at-a-time 式的点查以及更新等;而列存 (Column-oriented Storage),经历了早期的 DSM (Decomposition Storage Model) [2],以及后来提出的 PAX (Partition Attributes Cross) 尝试混合 NSM 和 DSM,在 C-Store 论文 [3] 后逐渐被人熟知,用于 OLAP,分析型不同于交易场景,存储 IO 往往是瓶颈,而列存可以只读取需要的列,跳过无用数据,避免 IO 放大,同质数据存储更紧凑,编码压缩友好,这些优势可以减少 IO,进而提高性能。 列存的数据组织形式 对于基本类型,例如数值、string 等,列存可以使用合适的编码,减少数据体积,在 C-Store

Kettle构建Hadoop ETL实践(九):事实表技术

僤鯓⒐⒋嵵緔 提交于 2020-11-28 13:31:42
目录 一、事实表概述 二、周期快照 1. 修改数据仓库模式 2. 创建快照表数据装载Kettle转换 三、累计快照 1. 修改数据库模式 2. 修改增量抽取销售订单表的Kettle转换 3. 修改定期装载销售订单事实表的Kettle转换 4. 修改定期装载Kettle作业 5. 测试 四、无事实的事实表 1. 建立新产品发布的无事实事实表 2. 初始装载无事实事实表 3. 修改定期装载Kettle作业 4. 测试定期装载作业 五、迟到的事实 1. 修改数据仓库模式 2. 修改定期装载Kettle转换 3. 修改装载月销售周期快照事实表的作业 4. 测试 六、累积度量 1. 修改模式 2. 初始装载 3. 定期装载 4. 测试定期装载 5. 查询 七、小结 上两篇里介绍了几种基本的维度表技术,并用示例演示了每种技术的实现过程。本篇说明多维数据仓库中常见的事实表技术。我们将讲述五种基本事实表扩展,分别是周期快照、累积快照、无事实的事实表、迟到的事实和累积度量。和讨论维度表一样,也会从概念开始认识这些技术,继而给出常见的使用场景,最后以销售订单数据仓库为例,给出Kettle实现的作业、转换和测试过程。 一、事实表概述 发生在业务系统中的操作型事务,其所产生的可度量数值,存储在事实表中。从最细节粒度级别看,事实表和操作型事务表的数据有一一对应的关系。因此

分布式文件存储hdfs简介及常用命令

戏子无情 提交于 2020-11-24 12:38:56
1、hdfs简介 1.1 什么是HDFS? HDFS(Hadoop Distributed File System)是hadoop生态系统的一个重要组成部分,是hadoop中的的存储组件,是最基础的一部分,MapReduce等计算模型都要依赖于存储在HDFS中的数据。HDFS是一个分布式文件系统,以流式数据访问模式存储超大文件,将数据分块存储到一个商业硬件集群内的不同机器上。 1.2 HDFS的设计目标 存储超大文件 HDFS适合存储大文件,单个文件大小通常在百MB以上 HDFS适合存储海量文件,总存储量可达PB,EB级 流式数据访问 为数据批处理而设计,关注数据访问的高吞吐量 硬件容错 基于普通机器搭建,硬件错误是常态而不是异常,因此错误检测和快速、自 动的恢复是HDFS最核心的架构目标 简单的一致性模型 一次写入,多次读取 一个文件经过创建、写入和关闭之后就不需要改变 不支持低时间延迟的数据访问 hdfs关心的是高数据吞吐量,不适合那些要求低时间延迟数据访问的应用。 本地计算 将计算移动到数据附近 1.3 HDFS的构成 数据块 文件以块为单位进行切分存储,块通常设置的比较大(最小6M,默认 128M) 块越大,寻址越快,读取效率越高,但同时由于MapReduce任务也是以 块为最小单位来处理,所以太大的块不利于于对数据的并行处理 一个文件至少占用一个块(逻辑概念) 冗余备份

数据仓库之Hive快速入门

与世无争的帅哥 提交于 2020-11-11 19:48:24
数据仓库VS数据库 数据仓库的定义: 数据仓库是将多个数据源的数据经过ETL(Extract(抽取)、Transform(转换)、Load(加载))理之后,按照一定的主题集成起来提供决策支持和联机分析应用的结构化数据环境 数据仓库VS数据库: 数据库是面向事务的设计,数据仓库是面向主题设计的 数据库一般存储在线交易数据,数据仓库存储的一般是历史数据 数据库设计是避免冗余,采用三范式的规则来设计,数据仓库在设计是有意引入冗余,采用反范式的方式来设计 OLTP VS OLAP: 联机事务处理OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易 联机分析处理OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果 常规的数仓架构: 为什么建设数据仓库: 各个业务数据存在不一致,数据关系混乱 业务系统一般针对于OLTP,而数据仓库可以实现OLAP分析 数据仓库是多源的复杂环境,可以对多个业务的数据进行统一分析 数据仓库建设目标: 集成多源数据,数据来源和去向可追溯,梳理血缘关系 减少重复开发,保存通用型中间数据,避免重复计算 屏蔽底层业务逻辑,对外提供一致的、 结构清晰的数据 如何实现: 实现通用型数据ETL工具 根据业务建立合理的数据分层模型 数据仓库分层建设 数仓建设背景: 数据建设刚起步

项目

痞子三分冷 提交于 2020-10-07 07:54:36
数仓项目 我们的数仓项目从数据来源来说分为两类,用户行为日志(web端,微信小程序,APP,前端页面埋点)和业务数据库,从技术架构上说,分为ods,dwd,dws,ads层. (1) ODS层是一个数据采集汇聚层,操作的是最原始的数据,主要的任务是:用flume采集第三方日志,和用sqoop进行业务数据库的抽取,要与原始的数据保持一致,采集过来的数据以json格式存储,一般存储的周期为三个月. (2) DWD层是一个明细层,对ods层的原始数据进行预处理,做ETL处理后的扁平化明细数据,主要的工作是对数据进行清洗过滤: 去除json数据体中的废弃字段(前端开发人员在埋点设计方案变更后遗留的无用字段)2. 过滤掉json格式不正确的脏数据3. 过滤掉日志中account及deviceid全为空的记录(如果是wx日志,过滤account+openid)4. 过滤掉日志中缺少关键字段(properties(事件属性)/eventid(事件id)/sessionid(会话id)的记录!5. 过滤掉日志中不符合时间段的记录(由于app上报日志可能的延迟,有数据延迟到达)6. 对于web端日志,过滤爬虫请求数据(通过useragent(浏览器标识)标识来分析)7. session分割,如果两个时间之间的间隔距离大于30分钟,就切割成两个会话.8. json数据扁平化