1.hiveserver2
- bin/hiveserver2 进入服务后端
- bin/beeline -u jdbc:hive2://$HS2_HOST:$HS2_PORT 前段命令窗口,跟hive shell一样操作
2.压缩格式
snappy 用mvn 编译 use -Drequire.snappy 替换hadoop ***/native
bin/hadoop checknative 检查
压缩比:bzip2>gzip>lzo>snappy
解压速度: spappy>lzo>gzip>bzip2
其中 gzip不支持分区,其他都支持
3.数据格式
sequence,textfile
rc,orc,paqquet 列式存储,压缩
avro
create table Addresses (
name string,
***
zip int
) stored as orc tblproperties ("orc.compress"="SNAPPY");
局部小结:
- 实际经常使用orc或parquet格式,压缩格式则使用snappy
4.hive调优
- FetchTask配置,默认mininal,可以改成more
- 大表拆分
- 外部表,分区表
- 数据存储,数据压缩
e.g:
create table page_views_orc_snappy
stored by orc
as select * from xxx;
- SQL优化
- Common/Shuffle/Reduce Join
发生的阶段,reduce task
大表对大表,每张表都是从文件中读取
- MapJoin
map task阶段
大表从文件读取,小表内存中,即DistributedCache
- SMB(Sort-Merge-Bucket) Join
4.explain [extended] 查看执行计划
- 其他
- 并行度parallel设置,一般设置10~20为宜
- jvm重用 九个以下
- Reduce数目
- 推测执行关闭
- map数目
IIII 项目实战
- 日志映射表两种方式
- 普通定义,日志文件要预处理
- HIVE正则表达式处理
CREATE TABLE apachelog (
host STRING,
***
agent STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
"input.regex" = ""
)
STORED AS TEXTFILE;
- python脚本
- insert overwrite u_data_new select TRANSFORM(field1,field2...) --input
USING 'python xxx.py' -- script
AS (field1,field2...) -- output
from u_data;
select field1,count(*) from
u_data_new group by field1;
xxx.py --python脚本,要单独写