Hive-分区分桶操作

在大数据中,最常用的一种思想就是分治,我们可以把大的文件切割划分成一个个的小的文件,这样每次操作一个小的文件就会很容易了,同样的道理,在hive当中也是支持这种思想的,就是我们可以把大的数据,按照每天,或者每小时进行切分成一个个的小的文件,这样去操作小的文件就会容易得多了。

一、分区表操作

企业常见的分区规则:按天进行分区(一天一个分区)

1、创建分区表语法
create table score(s_id string,c_id string, s_score int) partitioned by (month string) row format delimited fields terminated by '\t';
2、创建一个表带多个分区
create table score2 (s_id string,c_id string, s_score int) partitioned by (year string,month string,day string) row format delimited fields terminated by '\t';
3、加载数据到分区表中
load data local inpath '/export/servers/hivedatas/score.csv' into table score partition (month='201806');
4、加载数据到一个多分区的表中去
load data local inpath '/export/servers/hivedatas/score.csv' into table score2 partition(year='2018',month='06',day='01');
5、多分区联合查询使用union all来实现
select * from score where month = '201806' union all select * from score where month = '201806';
1
6、查看分区
show  partitions  score;
7、添加一个分区
alter table score add partition(month='201805');
8、同时添加多个分区
alter table score add partition(month='201804') partition(month = '201803');

注意:添加分区之后就可以在hdfs文件系统当中看到表下面多了一个文件夹

9、删除分区
alter table score drop partition(month = '201806');

特别强调:
分区字段绝对不能出现在数据库表已有的字段中!

作用:
将数据按区域划分开,查询时不用扫描无关的数据,加快查询速度。

二、分桶表操作

是在已有的表结构之上新添加了特殊的结构。

将数据按照指定的字段进行分成多个桶中去,说白了就是将数据按照字段进行划分,可以将数据按照字段划分到多个文件当中去

1、开启hive的桶表功能
set hive.enforce.bucketing=true;
2、设置reduce的个数
set mapreduce.job.reduces=3;
3、创建桶表
create table course (c_id string,c_name string,t_id string) clustered by(c_id) into 3 buckets row format delimited fields terminated by '\t';

桶表的数据加载,由于通标的数据加载通过hdfs dfs -put文件或者通过load data均不好使,只能通过insert overwrite

创建普通表,并通过insert overwrite的方式将普通表的数据通过查询的方式加载到桶表当中去

4、 创建普通表
create table course_common (c_id string,c_name string,t_id string) row format delimited fields terminated by '\t';
5、 普通表中加载数据
load data local inpath '/export/servers/hivedatas/course.csv' into table course_common;
6、通过insert overwrite给桶表中加载数据
insert overwrite table course select * from course_common cluster by(c_id);

特别强调:
分桶字段必须是表中的字段。

分桶逻辑:
对分桶字段求哈希值,用哈希值与分桶的数量取余,余几,这个数据就放在哪个桶内。

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

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

相关文章

ubuntu好文收集

ubuntu全程配置手册 http://ljlau.blogdriver.com/ljlau/1220277.html ubuntu下向系统日志写记录 http://linux0818.bokee.com/viewdiary.14153197.html aptitude 使用快速参考 http://linuxtoy.org/archives/aptitude_quick_reference.html

Flume简单介绍

在一个完整的离线大数据处理系统中,除了HDFSMapReduceHive组成分析系统的核心之外,还需要数据采集、结果数据导出、任务调度等不可或缺的辅助系统,而这些辅助工具在hadoop生态体系中都有便捷的开源框架,在此,我们首先来…

linux系统优化篇之---top

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。 top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48Tasks: 29 total, 1 running, 28 sleeping, …

Flume安装部署

1.安装部署 1、解压tar -zxvf apache-flume-1.9.0-bin.tar.gz 2、改名mv apache-flume-1.9.0-bin flume-1.9.0 3、配置环境变量 vi /etc/profile,source /etc/profile #flume export FLUME_HOME/usr/local/apps/flume-1.9.0 export PATH$PATH:$FLUME_HOME/bin4、将conf下的…

ubuntu学习摘要-ubuntu root用户

在我安装好后root的密码是什么?我怎样使用root帐号? 当你第一次安装好Ubuntu后,root帐号不能用。在安装期间创建的第一个用户对系统有管理权,通过“sudo”能象root运行程序.使用时仅需它的普通用户密码。例如: sudo apt-get updat…

Elasticsearch 简介入门

Elasticsearch 是一个分布式的开源搜索和分析引擎,适用于所有类型的数据,包括文本、数字、地理空间、结构化和非结构化数据。Elasticsearch 在 Apache Lucene 的基础上开发而成,由 Elasticsearch N.V.(即现在的 Elastic&#xff0…

Elasticsearch 7.x 安装及配置

一、下载安装 1、下载地址:https://www.elastic.co/cn/downloads/elasticsearch 2、解压安装:tar -zxcf elasticsearch-7.9.0-linux-x86_64.tar.gz 二、新建es用户 在某个版本以后,elasticsearch为了安全性,是不能用root用户启…

Ubuntu下面apache2安装

Ubuntu为我们提供了 su apt-get install 命令,通过它你可以很方便地安装一些软件,这些软件是放在Ubuntu放置在各个地方的服务器上面,如果你想安装的软件是比较常见的,一般都可以通过它来下载.当然 Apache 这个软件服务器上面是有…

Java并发篇_乐观锁与悲观锁

乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展。 一、引入概念 1、悲观锁 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁&#…

Redhat与ubuntu配置网卡

redhat linux中设置网卡固定ip之前在xwindow下的redhat-config-network 设置网卡固定ip发现不起作用,设置好后就是ping不通。就查了些资料,更改 /etc/sysconfig/network-scripts/ifcfg-eth0(第一个网卡为eth0),配置dns的文件为 /etc/resolv.c…

SSH软件包:Sftp,scp和ssh-agent

这篇文章的中心是介绍在ssh软件包中非常有用的程序如:sftp,scp,ssh-agent,和ssh-add。在下文中我们假设sshd2守护进程很好地被设置并且运行良好。Sftp和scp总览让我们把注意力集中到sftp和scp上。第一个(sftp安全文件传…

JAVA并发篇_公平锁与非公平锁

简单的来说,如果一个线程组里,能保证每个线程都能拿到锁,那么这个锁就是公平锁。相反,如果保证不了每个线程都能拿到锁,也就是存在有线程饿死,那么这个锁就是非公平锁。 一、引入概念 1、公平锁&#xff1…

Java并发篇_进程线程

一个进程包括由操作系统分配的内存空间,包含一个或多个线程。一个线程不能独立的存在,它必须是进程的一部分。一个进程一直运行,直到所有的非守护线程都结束运行后才能结束。 多线程能满足程序员编写高效率的程序来达到充分利用 CPU 的目的。…

Real提示“作为受限用户,您无足够的windows操作权限”的解决办法

运行Regedit.exe,翻到HKEY_CLASSES_ROOT/Software,删除Software;然后关闭注册表,再运行Regedit.exe,翻到HKEY_CLASSES_ROOT/Software,点右键选择“权限”,各个组都设置为“完全控制”和“读取”…

Java并发篇_线程详解

线程(thread) 是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。 一、线程的…

修改MYSQL最大连接数的3种方法

MYSQL数据库安装完成后,默认最大连接数是100,一般流量稍微大一点的论坛或网站这个连接数是远远不够的,增加默认MYSQL连接数的方法有两个 方法一:进入MYSQL安装目录 打开MYSQL配置文件 my.ini 或 my.cnf查找 max_connections100 …

可扩展的编程语言——Scala

一、Scala是什么 Scala是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚拟机),并兼容现有的Java程序。 ​ Scala语言的名称来自于"可伸展的语言"。之所以…

ubuntu7.10 apache+php+mysql配置

本篇文章 经过许多次的测试和修改已经完成了在Ubuntu7.10 下 安装配置 ApachePHPMySQL的所有的工作. 1、在Ubuntu7.10 下安装 Apache2PHP5MySQL sudo apt-get install apache2 libapache2-mod-php5 php5 php5-gd mysql-server php5-mysql phpmyadmin在下载来自动安装配置的时候…

Spark-大规模数据处理计算引擎

官网:http://spark.apache.org 一、Spark是什么 Spark是一种快速、通用、可扩展的大数据分析引擎,2009年诞生于加州大学伯克利分校AMPLab,2010年开源,2013年6月成为Apache孵化项目,2014年2月成为Apache顶级项目。项目是…

MySQL Replace INTO的使用

REPLACE的运行与INSERT很相像。只有一点除外,如果表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。请参见13.2.4节,“INSERT语法”。 注意,除非表有…