hive第五天
时间:2021-07-25
本文章向大家介绍hive第五天,主要包括hive第五天使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
第五天笔记
Hive With as 用法
// 之前的写法
select t.id
,t.name
,t.clazz
,t.score_id
,t.score
,c.subject_name
from(
select a.id
,a.name
,a.clazz
,b.score_id
,b.score
from (
select id
,name
,clazz
from
students
) a left join (
select id
,score_id
,score
from score
) b
on a.id = b.id
) t left join (
select subject_id
,subject_name
from subject
) c on t.score_id = c.subject_id
limit 10;
// with as 可以把子查询拿出来,让代码逻辑更加清晰,提高效率
// 必须跟着sql一起使用
with tmp1 as (
select id
,name
,clazz
from students
), tmp2 as (
select score_id
,id
,score
from
score
), tmp1Jointmp2 as (
select a.id
,a.name
,a.clazz
,b.score_id
,b.score
from tmp1 a
left join tmp2 b
on a.id = b.id
), tmp3 as (
select subject_id
,subject_name
from subject
)select t.id
,t.name
,t.clazz
,t.score_id
,t.score
,c.subject_name
from tmp1Jointmp2 t left join tmp3 c
on t.score_id = c.subject_id
limit 10;
Hive数据倾斜
原因:
key分布不均匀,数据重复
表现:
任务进度长时间维持在99%(或100%),查看任务监控页面,发现只有少量(1个或几个)reduce子任务未完成。因为其处理的数据量和其他reduce差异过大。
单一reduce的记录数与平均记录数差异过大,通常可能达到3倍甚至更多。 最长时长远大于平均时长。
解决方案:
- 1、从数据源头,业务层面进行优化
- 2、找到key重复的具体值,进行拆分,hash。异步求和。
create table data_skew(
key string
,col string
) row format delimited fields terminated by ',';
// 直接分组求count
select key,count(*) from data_skew group by key;
// 使用hash 异步求和
select key
,sum(cnt) as sum_cnt
from(
select key
,hash_key
,count(*) as cnt
from(
select key
,col
,if(key=='84401' or key == 'null',hash(floor(rand()*6)),0) as hash_key
from data_skew
) t1 group by key,hash_key
) tt1 group by tt1.key;
Hive读写模式
Hive在加载数据的时候,能不能查询?
Hive是 读时模式 的:hive在加载数据的时候,并不会检查我们的数据是不是符合规范,只有在读的时候才会根据schema去解析数据
MYSQL是 写时模式 的
原文地址:https://www.cnblogs.com/lipinbigdata/p/15058852.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 如何通过VMware安装Linux CentOS 7.7系统
- HBase入门
- VMware如何克隆一个虚拟机 主机名修改IP地址修改数据目录创建
- Python基础绘图教程(二)
- Docker简介与安装
- python绘图 | 国家气象局开源预报检验库(多图预警)
- Docker镜像与容器的常用操作
- DiDi Kafka-Manager安装和简单使用
- Docker数据管理与挂载管理
- Docker Dockerfile 指令详解与实战案例
- flume kafka和sparkstreaming整合
- Docker如何搭建私有registry镜像仓库
- Harbor介绍与企业级私有Docker镜像仓库搭建
- 如何查看docker run启动参数命令
- YAML 语言教程与使用案例