| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 01 Hive SQL基础知识 -> 正文阅读 |
|
[大数据]01 Hive SQL基础知识 |
前言本文主要讲的是一些Hive SQL的基础知识,希望能帮助到想要接触大数据分析和刚接触大数据分析的同学。实际永远比所见的复杂,但万丈高楼平地起,一切来源于基础。 关键字:初步了解sql每个关键字的功能 执行顺序/执行计划:看懂执行步骤,有助优化sql和排查sql执行遇到的问题 SQL优化/特殊运算/特殊函数:提高SQL的执行效率 补充知识:表结构处理语句/SQL书写规范/数据仓库基础知识 关键字
join的执行逻辑
关键字执行顺序
执行计划SQL优化join的优化
count(distinct **) 与 count(**) from (select ** from group by **) a? 两者的差别在于:
数据倾斜导致的查询缓慢 原因:mapreduce时 因数据在节点上分布不均匀,导致单节点承载数据过大,节点执行效率低,拉低整体的执行效率
解决方法:
特殊运算位运算:(二进制计算) & 按位与:5 & 3 = 1【101 & 11 = 1】 | 按位或:5 | 3 = 7 【101 | 11 = 111】 ^异或:5 ^ 3 = 6 【101 ^ 011 = 110】 位运算在留存计算中的运用:【适用于要同时计算多个留存率的需求】
取余:% 取整:ceil向上取整 floor向下取整 特殊函数窗口函数:在不改变数据集条数的情况下,按照parttition by 进行汇总统计 func(*) over (partition by * order by * ) 常用窗口函数:
特殊用法: 有无order by的区别: sum(1) over (partition by pb order by num) 按pb分组按num顺序逐步累计求值 sum(1) over (partition by pb) 按pb分组累计求值 grouping sets:按照group by条件,根据不同grouping sets条件进行多次聚合运算 区别union+group by:使用union操作会增加IO开销,会减少cpu和内存的开销,使用grouping sets会减少IO开销,会增加cpu和内存的消耗 lateral view:行转列,将一行array拆分成多行,其他字段重复【不能与where共用】
表结构处理语句create
内外部表的区别:
insert
overwrite的处理顺序:先对覆盖数据进行删除,再插入 alter
分区表新增字段问题:分区表中新增字段后会出现 外部表序号和hdfs列序号无法对应 导致数据无法显示 解决方案:alter table 表名 add columns (字段名 字段类型 comment '注释' ) cascade show & desc
SQL书写规范因人而异,但要一直保持一致的规范。【关键字和字段或表之间空两格,以便分清字段和表;逗号在后;运算符前后空一格;tab标识4个空格...】 以下是我根据自己的书写规范编的工具:sql_format(链接:百度网盘 请输入提取码? 提取码:w412) 数据仓库基础知识数仓的常见层级划分ods层:原始数据层,存储从业务库同步过来的数据,不做任何处理,不对数据开发以外的人开放 dwd层:明细数据层,对ods层的数据进行解析清洗 dws层:轻度汇总层,对dwd层的数据对常见的指标进行轻度聚合,粒度仍是用户级别 st层:报表层,根据业务需求定制的报表,粒度以日期为主,例如天/月/年 建表规范命名层级+业务id+表内容+更新方式【尽量英文,单词过长用缩写】 字段规范命名原子指标+修饰词【修饰词:时间修饰词等其他】 与原定数仓命名规范保持一致【原定数仓命名规范高于自认为的命名规范】 埋点基础知识埋点的意义记录用户行为,由数据分析师处理分析,供于运营/产品人员使用 埋点的类型前端代码埋点:由埋点人员设计及规范内容格式,埋点存在js【自主性高,代码耦合性高】 可视化埋点:埋点有控台配置【自主性中,代码耦合性低】 全埋点:开发规定内容,返回所有用户行为信息【自主性低,代码耦合性低,信息全】 埋点的内容一条完整的埋点应包含 用户信息(设备信息),用户行为,行为对应的业务信息,行为的来源 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 5:19:18- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |