hive复习总结2

目录

一:hive介绍

二:创建测试表

三:类型转换

四:操作

五 排序

六 分区

七 函数

八:自定义函数

九:压缩格式

十:文件存储格式

十一:企业级调优


一:hive介绍

    1.hive本质:将HQL转化为MapReduce程序

    2.hive中不走MR,走元数据

    3.基本数据类型:INT,BIGINT,DOUBLE,STRING

       hive的string类型相当于数据库中的varchar类型 

    4.hive中集合数据类型有

      Map, Array, Struct

      支持类型转换

二:创建测试表

create table test(
    name string,
    friends array<string>,
    children map<string,int>,
    address struct<street:string,city:string>
)
row format delimited fields terminated by ','  --列分隔符
collection items terminated by '_'   -- 数据分隔符
map keys terminated by ':'    -- map中key,value分隔符
lines terminated by '\n';  --行分隔符

     导入文本数据到测试表

     load data local inpath '/opt/module/hive/test.txt' into table test;

三:类型转换

    可以使用cast('1'  as INT)把字符串’1‘转换为整数1;如果强制类型转换失败

四:操作

    1.上传文件到HDFS

    dfs    -put  /opt/module/hive/data/student.txt    /user/atguigu/hive

    2.Import数据到指定Hive表中

     注意:先用export 导出后,再将数据导入。

     import  table student2  from '/user/hive/warehouse/export/student'; 

   3.hadoop命令导出到本地

    dfs  -get  /user/hive/warehouse/student/student.txt  /opt/module/data/export/student3.txt;

五 排序

    1.全局排序:order by ,只有一个Reducer

    2.每个Reduce内部排序 Sort by. sort by 产生一个排序文件。每个Reducer内部进行排序,对全局结果集来说不是排序。

       设置reduce个数:set mapreduce.job.reduces = 3;

      eg:select  *  from  emp  sort by deptno  desc;

六 分区

     distribute by :在有些情况下,我们需要控制某个特定行应该到那个reducer,通常是为了进行后续聚集操作。

distribute by 类似于MR中partition(自定义分区),进行分区,结合sort by使用。

   补充:

    当distribute by 和sort by字段相同的时候,可以使用cluster by.

    cluster by 除了具有 distribute by 的功能外还兼具 sort by 的功能。但是排序只能是升序 排序,不能指定排序规则为 ASC 或者 DESC

    为什么要分区:

         防止进行不必要的全表扫描。

七 函数

     1.explode(col) : 将hive一列中复杂的Array或者Map结构拆分成多行。

        使用Lateral View可以与之前的原始列关联起来。

     2.窗口函数

        OVER():指定分析函数工作的数据窗口大小。 

     3.Rank函数

       DENSE_RANK() :排序相同时,会重复、总数会减少。1,1,2

       Rank()  :排序相同时,会重复,但是总数不会变。 1,1,3

       ROW_NUMBER(): 会根据顺序计算。1,2,3

select name , subject, score,
rank()  over (partition by subject order by score desc) rp,
dense_rank() over(partition by subject order by score desc) drp,
row_number() over(partition by subjectorder by score desc) rmp
from score;

八:自定义函数

UDF

UDAF

UDTF

九:压缩格式

lzo  可切分

Snappy 不可切分

十:文件存储格式

    Hive支持的存储数据的格式主要有:textfile,  squencefile, parquet

十一:企业级调优

    1.Fetch抓取:Hive中对某些情况的查询可以不必使用MapReduce计算。

    2.本地模式:对于小数据集,执行时间可以明显缩短。

    3.小表大表join时候,小表放在左边

    4.Count(distinct)去重统计

    5.尽量避免笛卡尔积

    6.行列过滤

       列处理:只拿只需要的列,如果有分区,尽量使用分区过滤,少用select *

       行处理:在分区裁剪中,当使用外关联的时候,如果将副表的过滤条件

                      写在where后面,那么就会完全失去全表关联

    7.分区

    8分桶

    9合理设置Map以及Reduce个数

    10.并行执行

    11,严格模式:通过设置放置一些危险操作。

猜你喜欢

转载自blog.csdn.net/yezonghui/article/details/115210049