三、HIVE 高级进阶笔记

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不支持分区,其他都支持

三、HIVE 高级进阶笔记_第1张图片
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优化
  1. Common/Shuffle/Reduce Join
发生的阶段,reduce task
大表对大表,每张表都是从文件中读取
  1. MapJoin
map task阶段
大表从文件读取,小表内存中,即DistributedCache
  1. SMB(Sort-Merge-Bucket) Join
4.explain [extended] 查看执行计划

  • 其他
  1. 并行度parallel设置,一般设置10~20为宜
  2. jvm重用 九个以下
  3. Reduce数目
  4. 推测执行关闭
  5. map数目

IIII 项目实战
  • 日志映射表两种方式
  1. 普通定义,日志文件要预处理
  2. 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脚本
  1. 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脚本,要单独写

你可能感兴趣的:(hive)