hive概述

与数据库的区别:

查询语言相似、执行引擎不相似

数据更新不同、延时性不同

索引

数据规模、可扩张性

元数据信息:

表名、数据库名、内外表、位置、所有者、字段名

操作:

-e 执行后面sql语句

-f后面执行sql文件

case:sum(case name when “zhangsna” then 1 else 0 end)

行转列:CONCAT,CONCAT_WS

列转行:lateral view explode(id) tabelview as colomnview;  COLLECT_SET(col)

窗口函数:over()

排名函数:RANK() 排序相同时会重复,总数不会变

                  DENSE_RANK()排序相同时会重复,总数会减少

                  ROW_NUMBER() 会根据顺序计算

分区与分桶:

分区是文件夹,针对存储路径

分桶是针对数据文件

优化:

抽样查询:select * from stu tablesample(bucket 1 out of 4

on id);理解1和4的意思

小表在后面

where可以减少数据量的放在后面

fetch抓取设置为more

本地模式set hive.exec.mode.local.auto=true; 根据文件大小和数量

mapjoin开启

优化groupby操作:hive.map.aggr = true;hive.groupby.skewindata = true

关于null:使用nvl进行null的转化。join先去除null或者给null一个随机值

动态分区:insert into stu partition (p_time)

select id, time, uid, p_time from ori_partitioned;

并行执行 :hive.exec.parallel=true;

JVM重用:mapred-site.xml设置mapreduce.job.jvm.numtasks

你可能感兴趣的:(hive概述)