Hive - 高级

目录:

  1. hive存储模型
    1. 数据存储模型
    2. 数据倾斜
    3. 总体上Hive有四种表:外部表,内部表(管理表、托管表),分区表,桶表。
    4. 分区和分桶
  2. 常用hive关联查询
  3. hive sql 转化原理
  4. hive java 编程
  5. Beeline的使用
  6. 自定义函数说明
  7. hive 命令行说明

 

一.hive存储模型

  1. 数据存储模型
  2. 数据倾斜
    1. 原因
      简单来说数据倾斜就是数据的key 的分化严重不均,造成一部分数据很多,一部分数据很少的局面。
      举个 word count 的入门例子,它的map 阶段就是形成 (“aaa”,1)的形式,然后在reduce 阶段进行 value 相加,得出 “aaa” 出现的次数。若进行 word count 的文本有100G,其中 80G 全部是 “aaa”, 剩下 20G 是其余单词,那就会形成 80G 的数据量交给一个 reduce 进行相加,其余 20G 根据 key 不同分散到不同 reduce 进行相加的情况。如此就造成了数据倾斜,临床反应就是 reduce 跑到 99%然后一直在原地等着 那80G 的reduce 跑完。

       



      https://www.cnblogs.com/skyl/p/4855099.html
  3. 总体上Hive有四种表:外部表,内部表(管理表、托管表),分区表,桶表。

    Hive四大表类型内部表、外部表、分区表和桶表
  4. 分区和分桶

    说明:

 

二.hive关联查询

1.


说明:

操作:
1.创建两个表
2.创建数据文本
3.将数据加载到表中
4.测试
 

2.


答案:


三.hive sql 转化原理


可参考博客:

Hive系列之HSQL转换成MapReduce过程

HiveSQL解析原理:包括SQL转化为MapReduce过程及MapReduce如何实现基本SQL操作

 explain:使用explain可以验证sql语句是否正确,不会执行。

 

四.hive java 编程


步骤:

  1. 在linux中开启对外提供的服务
  2. 打开eclipse或者idea,创建maven项目
  3. 在pom.xml中添加依赖包
  4. java代码
  5. 注意:在运行过程中出现以下错误异常及解决方案
    1. 异常1

      解决方案:

      :以下二选一


五.Beeline的使用

  1. Beeline可以解决什么问题:本地hive根据其他主机ip和端口来操作对方的hive
  2. 使用方式:
    1. 第一步:对方开启hiveserver2服务(对方开启了hive服务,本地才能连接)
    2. 第二步:本地开启beeline
    3. 第三步:连接对方hive(密码为空)
    4. 第四步:操作


六.自定义函数说明




解析:

  1. explode说明
  2. 自定义函数:
    需求:将数据中的手机号码的中间4位用*代替
    1. 创建maven项目,导包hadoop和hive-exec
      4个包:


    2. 创建类继承UDF
    3. 创建方法public String evaluate(Text text)编写代码:

       
    4. 项目打包,并将jar包上传到linux

      可以使用xftp软件上传或者其他
    5. 加入到hive中(add jar jar的全路径),在hive窗口中执行
    6. 创建函数 create temporary function formatStr as '类的全定限名'

      说明:
      keduox_fun_str为函数名,我们自己取的
      com.keduox.MyUdf为第二步创建的类的全定限名
    7. 使用
      第一步:创建一个表来存储数据

      第二步:创建一个数据文本


      第三步:将数据文本加载到表中

      第四步:不使用函数的方式查询和使用函数的方式查询的区别
    8. 完成


七.hive 命令行说明

 

八.任务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值