IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 大数据——Hive内外表区别、分区表、分桶表的使用 -> 正文阅读

[大数据]大数据——Hive内外表区别、分区表、分桶表的使用

一、Hive内部表和外部表概念?区别?最适合的应用场景?

首先弄清楚什么是元数据和表数据:元数据就是表的属性数据,表的名字,列信息,分区等标的属性信息,它是存放在RMDBS传统数据库中的(如,mysql)。表数据就是表中成千上万条数据了。

hive的存储过程:启动hive时,会初始化hive,这时会在mysql中生成大约36张表(后续随着业务的复杂会增加),然后创建表,会在mysql中存放这个表的信息(不是以表的形式存在的,而是把表的属性以数据的形式放在mysql中,这样在hive中使用sql命令一样是能够查到这张表的)。然后把本地的文本文件使用hive命令格式化导入到表中,这样这些数据就存放到hdfs中,而不是在mysql或hive中。

因此:Hive内部表和外部表概念?区别?最适合的应用场景?
表结构都是由hive控制的,但是数据的控制权和删除表产生的结果不同:
数据控制权:内部表由hive控制数据,存储在对应数据库(MySQL等)文件夹下的子文件夹;外部表保存在hdfs,hbase等指定位置的路径
删除表产生的结果:内部表删除表结构和表数据;外部表只删除表结构,数据不会被删掉,并且如果重建了表结构,数据依然在表里。

二、Hive分区表的作用?静态分区和动态分区的区别

建表方式一致
1、作用:hive分区是将数据分在不同的文件夹,在查询时通过where子句中的表达式选择查询所需要的指定的分区,这样的查询效率会提高很多,避免了遍历全表
区别:分区和模式不同,载入数据方式不同

2、静态分区:

  • 动态分区模式:默认的是动态分区关闭,且模式严格
  • 载入数据方式:通过load方式一次一个分区装载数据

????????创建分区:alter table 表名 add partition(字段名=’…’ …);
????????加载数据:load data [local] inpath ‘…’ [overwrite] into table 表名 partition(字段名=’…’ …)
3、动态分区:

  • 动态分区模式:需要手动开启动态分区且设置模式为非严格
set hive.exec.dynamic.partition=true;
set hive.execdynamic.partition.mode=nonstrict;
  • 载入数据方式:
    通过二级转化方式(查询的结果集)一次性添加多个分区数据
create table 表名 ...
load ... into table
insert into table 分区名 partition(分区名 ...) select ... from 表名;
  • ?案例
insert into dynamic_people partition(year,month) 
select id,name,age,start_date,year(start_date),month(start_date) from people;

三、分桶抽样是怎么做的

  • 概念:

????????分桶对应于HDFS中的文件,更高的查询处理效率,使抽样(sampling)更高效。一般根据"桶列"的哈希函数将数据进行分桶

  • 分桶表设置:

????????建表时hive自动根据bucket数量分桶:set hive.enforce.bucketing = true;并在 create 后row format前增加:clustered by (TANLE_NAME) into N buckets
注意事项:必须使用INSERT方式加载数据

  • 分桶表抽样:

????????select? *? from 表名 tablesample(bucket X out of Y on id) s;其中x为第几个部分,Y为分桶数量的整数倍或因子。如果Y为分桶数,则数据为第X个桶;如果Y为小于分桶数的因子,则数据为X+[n]Y的数据;如果Y为大于分桶数的倍数,则可以理解为重新分桶为Y,数据为Y中的第X个桶。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-11 12:28:56  更:2021-08-11 12:31:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 16:44:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码