MacOS 安装
create database hive;
CREATE USER 'hadoop'@'%' IDENTIFIED BY 'Mysql123456!';
GRANT ALL PRIVILEGES ON *.* TO 'hadoop'@'%' WITH GRANT OPTION;
开启 Hive 服务:
$HIVE_HOME/bin/hive --service metastore &
第1章 基础知识
存在一个挑战,如何从一个现有的数据基础架构转移到 Hadoop 上,现有的数据架构是基于传统关系型数据库和结构化查询语句(SQL)的。
Hive 可以将大多数的查询转换为 MapReduce 任务(job)。
Hive 最大的限制是 Hive 不支持记录级别的更新、插入或删除操作。查询延时比较严重。
Hive 最适合数据仓库应用程序,可以维护海量数据,可以对数据进行挖掘,然后形成意见和报告等。
我们主要关注于CLI(也就是命令行),然后所有的命令行和查询都会进入到Driver(驱动模块),该模块对输入进行解析编译,对需求的计算进行优化,然后按照指定的步骤执行,一般是启动多个MapReduce任务来执行。启动MapReduce任务时,Hive不会生成Java MapReduce算法程序的。相反,Hive会通过一个表示“job执行计算”的XML文件驱动,执行内置的原生的Mapper和Reducer模块。
Metastore(元数据存储)是一个独立的关系型数据库(通常是一个MySQL实例),Hive会在其中保存表莫斯和其他系统元数据。
Hive 分割啥的不是很明白
表连接原则:
- 小表join大表,首选mapjoin。
- 如果小表不能放进内存,将记录少的表/子查询放在join左边。
- 大表join大表,考虑先对join中的表去重,过滤无用信息,如果大表转化成小表,用mapjoin。
Hive ON中必须是等值约束,求证为什么?
UNION 操作是组合两个SELECT语句的结果,并且不保留重复的一行记录。其中每一个SELECT语句必须要满足一下四个条件:
- 所选择的列的数量要一致
- 列表达式的数量要一致
- 数据类型要一致
- 数据的顺序一致
WHERE 要放到JOIN之后
第二种方式: SELETCT a.* FROM a LEFT SEMI JOIN b ON (b.key LIKE ‘filter%’ AND a.key = b.key);
lateral view explode 这个是什么意思?
数据倾斜
数据倾斜是指,map /reduce程序执行时,reduce节点大部分执行完毕,但是有一个或者几个reduce节点运行很慢,导致整个程序的处理时间很长,这是因为某一个key的条数比其他key多很多(有时是百倍或者千倍之多),这条key所在的reduce节点所处理的数据量比其他节点就大很多,从而导致某几个节点迟迟运行不完。
症状和原因:
- 操作:join,group by,count distinct
- 原因:key分布不均匀,人为的建表疏忽,业务数据特点。
- 症状:任务进度长时间维持在99%(或100%),查看任务监控页面,发现只有少量(1个或几个)reduce子任务未完成;查看未完成的子任务,可以看到本地读写数据量积累非常大,通常超过10GB可以认定为发生数据倾斜。
- 倾斜度:平均记录数超过50w且最大记录数是超过平均记录数的4倍;最长时长比平均时长超过4分钟,且最大时长超过平均时长的2倍。
关键词法。提炼自己需要表现的几个方面,例如性格、能力、学历、爱好等。注意这些亮点是能投观众之所好的。