Hive的数据模型-分区表


需求

select * from t1  where xxxx;
这是全表扫描的。实际应用中,有时候不一定需要全表扫描。
比如电信的日志文件,一个表里存了从去年到现在的日志文件,那是很多很大的,实际需求要查今天的,如果用上面的sql,要全部扫描,很耗时间和机器资源,怎么办?
可以把文件分区存放,比如按天划分,查询时,指定分区。于是,分区表出来了。


概述

分区可以理解为分类,通过分类把不同类型的数据放到不同的目录下。
分类的标准就是分区字段,可以一个,也可以多个。
分区表的意义在于优化查询。查询时尽量利用分区字段。如果不使用分区字段,就会全部扫描。


语法

建表

CREATE TABLE tmp_table #表名
(
title   string, # 字段名称 字段类型
minimum_bid     double,
quantity        bigint,
have_invoice    bigint
)COMMENT '注释:XXX' #表注释
 PARTITIONED BY(pt STRING) #分区表字段(如果你文件非常之大的话,采用分区表可以快过滤出按分区字段划分的数据)
 ROW FORMAT DELIMITED 
   FIELDS TERMINATED BY '\t'   # 字段是用什么分割开的
STORED AS SEQUENCEFILE; #用哪种方式存储数据,SEQUENCEFILE是hadoop自带的文件压缩格式


修改表

alter table t2 add partition(class='job5');


hive>SHOW PARTITIONS t3 [partition (province='beijing')];


hive>ALTER TABLE t3 ADD [IF NOT EXISTS] PARTITION(...) LOCATION '...';


hive>ALTER TABLE t3 DROP PARTITION(...);


实验

准备文件

[root@hello110 data]# cat  partition_test;
1       dddd    dddd
2       www     www
3       eeee    wwww
4       tttt    cccc
5       yyycc   dddd

创建表

hive (zmgdb)> create table p_t1(name string,post string,address string)
            > partitioned by (city string)
            > row format delimited fields terminated by '\t'
            > ;

OK
Time taken: 0.106 seconds

导入数据到北京分区

hive (zmgdb)> load data local inpath '/data/partition_test' into table p_t1 partition(city='beijing');
Loading data to table zmgdb.p_t1 partition (city=beijing)

OK
Time taken: 0.577 seconds

导入数据到宁波分区
hive (zmgdb)> load data local inpath '/data/partition_test' into table p_t1 partition(city='ningbo');
Loading data to table zmgdb.p_t1 partition (city=ningbo)

OK
Time taken: 0.403 seconds

导入数据到台州分区
hive (zmgdb)> load data local inpath '/data/partition_test' into table p_t1 partition(city='taizhou');
Loading data to table zmgdb.p_t1 partition (city=taizhou)

OK
Time taken: 0.343 seconds

显示分区

hive (zmgdb)> show partitions p_t1;
OK
partition
city=beijing
city=ningbo
city=taizhou
Time taken: 0.083 seconds, Fetched: 3 row(s)

查看全部数据,全表
hive (zmgdb)> select * from p_t1;
OK
p_t1.name       p_t1.post       p_t1.address    p_t1.city
1       dddd    dddd    beijing
2       www     www     beijing
3       eeee    wwww    beijing
4       tttt    cccc    beijing
5       yyycc   dddd    beijing
1       dddd    dddd    ningbo
2       www     www     ningbo
3       eeee    wwww    ningbo
4       tttt    cccc    ningbo
5       yyycc   dddd    ningbo
1       dddd    dddd    taizhou
2       www     www     taizhou
3       eeee    wwww    taizhou
4       tttt    cccc    taizhou
5       yyycc   dddd    taizhou
Time taken: 0.105 seconds, Fetched: 15 row(s)

按分区查询,查宁波分区,city='ningbo' 是分区

hive (zmgdb)> select * from p_t1 where city='ningbo';
OK
p_t1.name       p_t1.post       p_t1.address    p_t1.city
1       dddd    dddd    ningbo
2       www     www     ningbo
3       eeee    wwww    ningbo
4       tttt    cccc    ningbo
5       yyycc   dddd    ningbo
Time taken: 0.723 seconds, Fetched: 5 row(s)





























hive>SHOW PARTITIONS t3 [partition (province='beijing')];


hive>ALTER TABLE t3 ADD [IF NOT EXISTS] PARTITION(...) LOCATION '...';


hive>ALTER TABLE t3 DROP PARTITION(...);




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539186.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

arduino 停止程序_建立Arduino机器人,第五部分:障碍规避

欢迎阅读教程系列的第五篇文章,其中我正在构建一个基于遥控Arduino的车辆机器人。这是我到目前为止发表的文章列表:第一部分:硬件组件第二部分:Arduino编程第三部分:组装机器人第四部分:A(不是那样)基本机器…

debug error怎么解决_我要以血和泪的经历告诉你,这个 bug 太难解决了

[npm install报错: npm WARN tar ENOENT: no such file or directory]npm installnpm WARN deprecated request2.88.2: request has been deprecated, see request/request#3142npm WARN deprecated mkdirp0.5.1: Legacy versions of mkdirp are no longer supported. Please u…

Yarn简单介绍及内存配置

在这篇博客中,主要介绍了Yarn对MRv1的改进,以及Yarn简单的内存配置和Yarn的资源抽象container。我么知道MRv1存在的主要问题是:在运行时,JobTracker既负责资源管理又负责任务调度,这导致了它的扩展性、资源利用率低等问…

mysql计算时间函数_mysql时间计算函数

当前一个业务需求,需要查找创建在三天以前的数据,表中是存了一个创建时间的;这个需求看起来很简单,直接全部查找出来然后用代码根据时间筛选一下就可以了。但这只是适用于数据量不大的情况下,如果数据量大,…

html上传文件_.NET基于WebUploader大文件分片上传、断网续传、秒传

(给DotNet加星标,提升.Net技能)转自:学习中的苦与乐cnblogs.com/xiongze520/p/10412693.html现在的项目开发基本上都用到了上传文件功能,或图片,或文档,或视频。我们常用的常规上传已经能够满足当前要求了,…

Hadoop运行任务时一直卡在: INFO mapreduce.Job: Running job

原文链接:http://blog.csdn.net/dai451954706/article/details/50464036 ----------------------------------------------------------------------------------------------------- 今天,一大清早同事就让我帮他解决Hive的问题:他在Hive中…

git切换用户密码_Git 最基本的命令

本人比较懒,不是很爱学习新东西,之前用Git一直在用GUI SourceTree,今天因为用到Cloud IDEGitHub才迫不得已用一下Git的命令行,如果你是Git的新手,也分享给你最基本的命令。新建一个Git版本库把一个本地文件夹变成一个G…

动态分区装载数据

不开启 一个个分区导入,分区需要做到一对一。 hive (zmgdb)> insert overwrite table p_t3 partition (cityningbo) > select name,post,address from p_t1 where cityningbo; 会启动mapreduce进行导入,mr卡在kill job_xxxx&#…

python爬虫常见报错_对Python爬虫常见工具总结,欢迎补充

前言 以前写爬虫都是用requests包,虽然很好用,不过还是要封装一些header啊什么的,也没有用过无头浏览器,今天偶然接触了一下。 原因是在处理一个错误的时候,用到了几个以前没有用过的工具;这几个工具也挺常…

AI造福设计师:搭配色板这种苦差事交给GAN就好啦(教程)

本文来自AI新媒体量子位(QbitAI)设计师要开工,总是离不开配色方案,也就是色板。 不过,做色板可不是个简单的活,色板生成器Colormind的作者Jack Qiao(名字来自Product Hunt,我们下面叫…

mapreduce yarn内存参数

1、yarn-site.xml 设置 1.1 RM设置 RM的内存资源配置,主要是通过下面的两个参数进行的(这两个值是Yarn平台特性,应在yarn-sit.xml中配置好): yarn.scheduler.minimum-allocation-mb yarn.scheduler.maximum-allocati…

python有哪些常用的package_个人Python常用Package及其安装

为了避免每次重装系统时又要东翻西找,现在此记录一下目前常用的Python包安装过程。 1) Python: 2.7.11, 下载地址:www.python.org。由于个人喜欢使用PyQt4(其实是不会PyQt5……),因此选择安装Python2.7。 安装好Python…

html网页设计大赛_HTML5网页设计大赛 || 决赛名单公布

历经数日的HTML5网页设计大赛初赛已经落下的帷幕激动人心的决赛即将开始你们准备好了吗?①决赛名单在经过评委老师多轮评选后,有以下队伍/(个人)脱颖而出进入决赛:1.施佳镛_故宫旅游网2.王永校_神秘莫测的宇宙3.黄炜岳_广州旅游网站4.吴贵滨_NameLess5.陈…

2018.03.12、Android知识点-Java篇

1、阐述下对象的自动装箱和拆箱 2 基本数据类型的自动装箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0开始提供的功能。自动装箱是java编译器在java原生类型和对应的对象包装类型上做的自动转换。 自动装箱:Integer i 1;其实编译器为你自动实现了&#x…

Hive的数据模型—桶表

概述 桶表是对数据进行哈希取值,然后放到不同文件中存储。 数据加载到桶表时,会对字段取hash值,然后与桶的数量取模。把数据放到对应的文件中。 物理上,每个桶就是表(或分区)目录里的一个文件,一个作业产…

mysql+使用swap_MySQL避免使用SWAP

当物理内存的数量不能容纳数据的时候,os会把虚拟内存中的数据写到磁盘上,此时的交换对于运行在操作系统中的进程是透明的。交换对与MySQL性能有很大的影响,对于Innodb存储引擎它对内存中的数据锁住全局互斥量,如果此时导致了磁盘的…

delphi bmp绘制矢量文件效率慢_聊一聊矢量瓦片的常识

一、矢量瓦片的基本原理和相关格式现阶段,电子地图瓦片主要使用两种方式,一种是传统的栅格瓦片,另外一种是新出的矢量瓦片(Vector Tiles),前者是采用四叉树金字塔模型的分级方式,将地图切割成无数大小相等的矩形栅格图…

python生成器与迭代器。

生成器 在python 中一边循环一边计算的机制,叫做生成器(generator)。 通过列表生成式,我们可以直接创建一个列表。但是,收到内存的限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用…

centos mysql 设置_CentOS下MySQL安装后配置和设置-阿里云开发者社区

CentOS下MySQL安装后配置和设置:1:安装完成路径:1、数据库目录/var/lib/mysql/2、配置文件/usr/share/mysql(mysql.server命令及配置文件)3、启动脚本/etc/rc.d/init.d/(启动脚本文件mysql的目录)4、相关命令/usr/bin(mysqladmin mysqldump等命令)注:1~3…

python怎样将list转化成字典_在python 中如何将 list 转化成 dictionary

原标题:在python 中如何将 list 转化成 dictionary 问题1:如何将一个list转化成一个dictionary? 问题描述:比如在python中我有一个如下的list,其中奇数位置对应字典的key,偶数位置为相应的value解决方案: 1…