大数据学习week3

Hive基础与进阶详解

Hive基础部分

Hive的体系架构

在这里插入图片描述
用户接口主要有三个:CLI(command line interface)命令行,JDBC 和 Web UI, CLI是开发过程中常用的接口,在hive Server2提供新的命令beeline,使用sqlline语法,会有单独的章节来介绍。

metaStore: hive的元数据结构描述信息库,可选用不同的关系型数据库来存储,通过配置文件修改、查看数据库配置信息。

Driver: 解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后由MapReduce调用执行 。

常见的三个面试问题

  1. 什么是内部表和外部表?90%
  2. 它们之间的主要区别是什么?80%
  3. 使用它们的最佳实践是什么?20% (最佳实践)

Hive 建表高阶语句 CTAS and CTE

  1. CTAS–按选择创建表格
    基于select查询的结果生成表
  2. 不能生成分区表,外部表,桶表
  3. 像其他表格一样创建表格(fast)
    复制表的结构,不携带数据

分区(partition):

  1. 为了提高性能,Hive可对数据进行分区
    分区列的值将表分成段
    查询时可以忽略整个分区
  2. 必须由用户正确创建分区。 插入数据时必须指定分区
  3. 在查询中使用时,“分区”列和常规列之间没有区别
  4. 在查询时,Hive将自动过滤掉未使用的分区以获得更好的性能

分桶(Buckets)

  1. bucket对应于HDFS中的文件段
  2. 随机抽样数据或加速JOIN的速度
  3. 根据“bucket列”的哈希函数将数据分成一组
  4. Hive不会自动执行分桶。 需要设置强制分桶
    SET hive.enforce.bucketing = true;
  5. 存储桶列的选择密切依赖于业务逻辑
  6. 要定义桶的数
    量,我们应该避免每个桶中的数据太多或太少。 在靠近两个数据块的地方更好的选择。 使用2N作为桶的数量.

Hive进阶部分

什么是数据仓库

  1. 数据仓库解决方案构建在hadoop之上
  2. 提供类似SQL的查询语言Hive Query Language-HQL,它具有最小的学习曲线
    强调文本 强调文本

Hive的视图

  1. View是一种逻辑结构,通过隐藏虚拟表中的子查询,连接和函数来简化查询
  2. Hive视图不存储数据不能物化
  3. 创建视图后,立即冻结其架构
  4. 如果删除或更改基础表,则查询视图将失败
  5. 视图是只读的,不能用作LOAD/INSERT/ALTER的目标

hive mapjoin

  1. MAPJOIN语句意味着只通过map执行连接,没有reduce job
    MapReduce编程可以只有map阶段而没有reduce阶段.
  2. MapJoin会读取小表中所有的数据到内存,然后广播到所有的运行map任务的节点。
    类似于MapReduce DC,也就是Distributed Catch,分布式缓存
  3. 设置 hive.auto.convert.join=true后,Hive会在运行时自动将JOIN转换为MAPJOIN
    有没有弊端呢?有弊端的,有时候会造成内存溢出
    4.不支持如下操作
    Use MAPJOIN after UNION ALL, LATERAL VIEW, GROUP BY/JOIN/SORT BY/CLUSTER BY/DISTRIBUTE BY
    Use MAPJOIN before by UNION, JOIN and other MAPJOIN
    5.底层就是基于Mapreduce的DC(分布式缓存)来实现的。

学习回顾

  1. hive的分区和分桶的概念
  2. 动态分区和静态分区的比较
  3. hive进阶中的语法的掌握
  4. hive的视图以及窗口案例的实践
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值