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实践——将查询的数据按照分区进行存储

随着互联网发展,数据海量形问题越来越严重,PB级别的数据量已经非常常见。用传统数据库查询这么巨大的数据会很困难。而 Hive 的出现降低了数据查询的负担。Apache Hive 把 SQL 代码转换的 MapReduce 作业,并提交到 Hadoop 集群执行。但是若提交一个 SQL 查询的时候,Hive均读取全部数据集则会很耗时。若表的数据非常大,那么 MapReduce 作业的执行就比较低效。因此,在表创建分区可以明显提升数据查询效率。

Hive 分区其实就是将表中的数据按照一定规则散列成多个分区。常见的例如按照月分区、不同日期的分区。因此在具体查询数据时只需查对应分区的数据就可以,而不需要全表搜索,大大降低了查询时的时间开销。

1、当前 Hive主要分为两种分区类型

  • 静态分区
  • 动态分区

A、Hive 静态分区

  1. 把输入数据文件单独插入分区表的叫静态分区。
  2. 通常在加载文件(大文件)到 Hive 表的时候,首先选择静态分区。
  3. 在加载数据时,静态分区比动态分区更节省时间。
  4. 可以通过 alter table add partition语句在表中添加一个分区,并将文件移动到表的分区中。
  5. 可以修改静态分区中的分区。
  6. 可以从文件名、日期等获取分区列值,而无需读取整个大文件。
  7. 如果要在 Hive 使用静态分区,需要把 hive.mapred.mode设置为 strict,set hive.mapred.mode=strict。 静态分区是在严格模式进行下。 可以在 Hive
  8. 的内部表和外部表使用静态分区。

B、Hive 动态分区

  1. 对分区表的一次性插入称为动态分区。
  2. 通常动态分区表从非分区表加载数据。
  3. 在加载数据的时候,动态分区比静态分区会消耗更多时间。
  4. 如果需要存储到表的数据量比较大,那么适合用动态分区。
  5. 假如要对多个列做分区,但又不知道有多少个列,那么适合使用动态分区。
  6. 动态分区不需要 where 子句使用 limit。
  7. 不能对动态分区执行修改。
  8. 可以对内部表和外部表使用动态分区。
  9. 使用动态分区之前,需要把模式修改为非严格模式。

创建分区表:

create table test_detail (
    test_id string,
    email string,
    app_name string
) partitioned by (date_time string) stored as orc;

按照分区添加数据:

insert into table test_detail partition (date_time) select test_id, email, app_name, date_time from orders;

注意:

  • 动态添加分区的时候,查询的分区字段必须放在最后面(order_dow),否则结果不是你想要的;
  • 往表中导入数据时,查询的字段个数必须和目标的字段个数相同,不能多,也不能少,否则会报错。但是如果字段的类型不一致的话,则会使用null值填充,不会报错。而使用load
  • data形式往hive表中装载数据时,则不会检查。如果字段多了则会丢弃,少了则会null值填充。同样如果字段类型不一致,也是使用null值填充。

Hive 分区的好处:
1、Hive 的分区可以水分分散执行压力。
2、数据查询性能比较好。
3、不需要在整个表列中搜索单个记录。

Hive 分区的缺点:
1、可能会创建太多的小分区,也就是说可能会创建很多目录。
2、分区对于低容量数据是有效的,但有些查询比如对大的数据量进行分组需要消耗很长时间。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 10:50:33  更:2022-08-06 10:51:51 
 
开发: 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/19 21:51:03-

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