随笔分类 -  Hive

摘要:1. 笛卡尔积 1. 触发笛卡尔积条件 1. join 时,没有on条件 或 on 条件无效 2. 为什么要尽量避免笛卡尔积? hive 只会使用一个reduce来完成笛卡尔积,当数据量过大时,容易内存不足 3. 如果必须使用笛卡尔积时,可以使用MapJoin,关联操作在Map端完成 4. 测试 - 阅读全文
posted @ 2022-02-11 11:07 学而不思则罔! 阅读(1187) 评论(0) 推荐(0) 编辑
摘要:1. count(distinct) 调优 说明 : count(distinct) 会启用一个 ReduceTask 来完成,当数据量巨大时,单个ReduceTask 无法完成 在对大量数据做 count(distinct)操作时, 可以使用 group by 后,再 count ,将任务拆分 示 阅读全文
posted @ 2022-02-11 11:02 学而不思则罔! 阅读(411) 评论(0) 推荐(0) 编辑
摘要:1. 对group by的调优 (开启map端聚合) 说明 : 默认情况下 Map阶段相同的key 会被发送到同一个reduce中去聚合 当某个key数据量过大时,就造成了数据倾斜 什么是map端聚合? 并不是所有聚合操作,都需要在reduce端聚合,可以在map端先将部分数据,进行聚合,最终数据在 阅读全文
posted @ 2022-02-11 10:59 学而不思则罔! 阅读(1724) 评论(0) 推荐(0) 编辑
摘要:1. hive 的三种join 1. reduceJoin 也叫 Common Join、Shuffle Join 2. MapJoin 3. Sort Merge Bucket Join(分桶表Join) 2. SMB(Sort Merge Bucket) Join 分桶表join 说明 : 大表 阅读全文
posted @ 2022-02-10 19:42 学而不思则罔! 阅读(2344) 评论(0) 推荐(0) 编辑
摘要:1. key空值过多导致 任务异常(数据倾斜)处理方案 1. 空值过滤 说明 : 1. 当key的空值过多时,相同的key会被分配到同一个reduce中处理,导致此reduceTask内存不足,而任务失败 处理 : 在不影响业务的情况下将 key为null的数据处理掉 2. 空值转换 说明 : 大表 阅读全文
posted @ 2022-02-10 19:35 学而不思则罔! 阅读(471) 评论(0) 推荐(0) 编辑
摘要:1.大小表join(MapJoin) 说明 : 当大表小表关联时,可以将小表读取到内存,在Map端进行数据关联 小表在左在右都会触发 Mapjoin2. 怎样判断大小表? 大表 > set hive.mapjoin.smalltable.filesize 小表 <= set hive.mapjoin 阅读全文
posted @ 2022-02-10 19:25 学而不思则罔! 阅读(1468) 评论(0) 推荐(0) 编辑
摘要:1. 本地模式 1. 什么是本地模式 hive 默认会将所有任务,提交到yarn上执行,由yarn负责整个job的调度与监控 当数据集非常小时(只有一个block,只存在一个datanode节点上),提交job的时间 将远大于 job运行的时间, 此时可以开启本地模式,将job在本地运行,不提交到y 阅读全文
posted @ 2022-02-10 12:32 学而不思则罔! 阅读(1443) 评论(0) 推荐(0) 编辑
摘要:1. 语法explain [extended | dependency | authorization] query2. 从执行计划中 可以获取那些信息? 1. Job任务的DAG(有向无环图) 2. 操作算子 示例 : Fetch Operator Select Operator Map Redu 阅读全文
posted @ 2022-02-10 12:22 学而不思则罔! 阅读(210) 评论(0) 推荐(0) 编辑
摘要:1. 结论 存储格式一般选择 : orc 和 parquet 压缩方式一般选择 : snappy(不可切片)、lzo(可切片) 注意: 当读取单个大文件时,要选择lzo方式 2. hive 支持的文件存储格式 行式存储 : textfile、sequencefile 列式存储 : orc、parqu 阅读全文
posted @ 2022-02-08 17:58 学而不思则罔! 阅读(850) 评论(0) 推荐(0) 编辑
摘要:--(1) 如何设置 开启Map输出阶段压缩 1. 开启hive 中间传输数据压缩功能set hive.exec.compress.intermediate=true;--2. 开启mr 中mapTask 输出结果压缩set mapreduce.map.output.compress=true;-- 阅读全文
posted @ 2022-02-07 19:29 学而不思则罔! 阅读(147) 评论(0) 推荐(0) 编辑
摘要:1 阅读全文
posted @ 2022-02-07 16:05 学而不思则罔! 阅读(25) 评论(0) 推荐(0) 编辑
摘要:1 阅读全文
posted @ 2022-02-07 16:03 学而不思则罔! 阅读(35) 评论(0) 推荐(0) 编辑
摘要:1 阅读全文
posted @ 2022-02-07 16:03 学而不思则罔! 阅读(17) 评论(0) 推荐(0) 编辑
摘要:1 阅读全文
posted @ 2022-02-07 16:03 学而不思则罔! 阅读(24) 评论(0) 推荐(0) 编辑
摘要:案例1-- 考查 :开窗聚合函数、开窗分区累加(order by)、获取当前记录的前一条数据(lag)、根据row_number将数据划分x等分(ntile) --1. 数据准备 --1. 数据准备 -- business.txt jack,2017-01-01,10 tony,2017-01-02 阅读全文
posted @ 2022-02-07 14:38 学而不思则罔! 阅读(64) 评论(0) 推荐(0) 编辑
摘要:1. 开窗函数的作用 说明 : 开窗函数就是 根据指定的开窗规则 为表的每条记录,标记状态,不会增加或者减少表的记录数 2. 语法 分析函数、聚合函数 over(partition by 列名 order by 列名 rows between 开始位置 and 结束位置) 注意 : over(par 阅读全文
posted @ 2022-02-07 07:09 学而不思则罔! 阅读(377) 评论(0) 推荐(0) 编辑
摘要:1. explode (遍历集合 UDTF函数) 说明 : 将hive 中array 数据遍历成多行, map 遍历成 多行、多列(key,value) 注意 : 1. udtf 只支持 select 子语句中有一个表达式 select explode(array) ✔️️ select id,ex 阅读全文
posted @ 2022-02-05 17:38 学而不思则罔! 阅读(478) 评论(0) 推荐(0) 编辑
摘要:1. concat 说明 : 将多个字符串 按照默认分隔符(空) ,拼接成一个字符串 示例 : select concat('gao','cun'); 结果 : gaocun2. concat_ws 说明 : 将多个字符串 或者array, 按照指定分隔符(第一个参数), 拼接成一个字符串 示例 : 阅读全文
posted @ 2022-02-05 16:36 学而不思则罔! 阅读(1553) 评论(0) 推荐(0) 编辑
摘要:1. 自定义函数的类型 名称 特点 示例 UDF (User-Defined-Function) 一进一出 示例 : like、rlike、if、upper UDAF (User-Defined-Aggregation-Function) 聚合函数,多进一出 示例 : max、min、count、a 阅读全文
posted @ 2022-02-03 11:02 学而不思则罔! 阅读(691) 评论(0) 推荐(0) 编辑
摘要:--1. 语法 tablesample(bucket x out of y) 注意 : x 必须 <= y--2. 案例select * from home.ods_front_log_dd tablesample(bucket 1 out of 4 on log_id); 阅读全文
posted @ 2022-01-29 18:40 学而不思则罔! 阅读(41) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示