赞
踩
分区裁剪语句:select * from emp_p_2 where dt >=“2020-10-14” and dt <= “2020-10-16”;
就是将一个大表划分为多个子表,避免全表扫描提高查询效率
主要表现为在hdfs的表目录下多了一个子目录,子目录的名称即为分区的名称,将要查询的数据放入分区目录下面。可以设置多级分区,数据需放在最里层的目录下。
分区表只能创建的时候指定分区表,如果建表不是分区表不能更改
场景:事实表用分区表。按天或者按地区进行分区。一般不要超过三级。
分区字段当做普通字段用,没有索引。
CREATE TABLE `emp_p_1`(
`id` string,
`name` string,
`job` string,
`mgr` string,
`hiredate` date,
`sal` double,
`comm` double,
`deptid` string)partitioned by (`dt` string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ;
partitioned by (dt
string):表示分区的字段为dt,可以通过查看表的结构,观察分区
将数据放入表目录下
查询
可以看到并没有查询到数据,分区表里的数据必须要指明所在的分区,将表中创建一个分区
alter table emp_p_1 add partition(dt=“2020-1-1”);
会发现hdfs上多了一个分区目录,我们将数据放入到该目录下,查询即可
注意:不能手动在表目录下创建一个目录,自己在hdfs上创建目录,MySQL中并没有该目录的信息,因此必须通过在hive中指定
也可以将其他表的查询结果插入到该表中,但是注意要指定分区,有分区会插入到该分区下,没有会创建
insert into table emp_p_1 partition(dt=“2020-1-2”) select * from emp_rc;
查询分区表下所有数据
CREATE TABLE `emp_p_2`(
`id` string,
`name` string,
`job` string,
`mgr` string,
`hiredate` date,
`sal` double,
`comm` double,
`deptid` string)partitioned by (`dt` string,`province` string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ;
alter table emp_p_2 add partition(dt=“2020”,province=“33”);
注意:分区的字段只能给字母或者数字,不能给汉字,因为hive和MySQL的编码集是不一样的
将数据上传至该目录下
注意:将其他表中的数据插入到分区表时,也需要指定分区目录
insert into emp_b_p partition(dt=“2020-10-16”,province=“33”) select * from emp_0;
和普通表的删除方法一样
CREATE TABLE `emp_b_p1`(
`id` string,
`name` string,
`job` string,
`mgr` string,
`hiredate` date,
`sal` double,
`comm` double,
`deptid` string)
partitioned by (`dt` string)
clustered by (job) into 10 buckets
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ;
设置分桶为true,启动
set hive.enforce.bucketing = true;
将普通表的数据插入到分桶表,注意列数匹配问题
会发现出现10个reduce,这是因为之前设置了10个桶,相同key的必在一个桶中,有的桶中可能没数据,有的桶中也可能有多个key值得数据
CREATE TABLE `emp_b_p2`(
`id` string,
`name` string,
`job` string,
`mgr` string,
`hiredate` date,
`sal` double,
`comm` double,
`deptid` string)
clustered by (job) into 10 buckets
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ;
load data inpath ‘hdfs上的路径’ into table 表名
java
java入门基础学习(一)
java入门基础学习(二)
java入门基础学习(三)
java入门基础学习(四)
java入门基础学习(五)
java入门基础学习(六)
java入门基础学习(七)
java入门基础学习(八)
java入门基础学习(九)
java入门基础学习(十)
java入门基础学习(十一)
java入门基础学习(十二)
java入门基础学习(十三)
java入门基础学习(十四)Maven Git
java总结,题目+笔记
java进阶之常见对象(一)
java进阶之常见对象(二)
java进阶之冒泡排序
java进阶之选择排序
java进阶之面向对象(封装)
java进阶之面向对象(代码块、继承)
java进阶之面向对象(多态、抽象、接口)
java进阶之匿名内部类、访问修饰符、包
java进阶之io流(字节流,字符流)
java应用一(反射的应用)
java应用二(配置文件、工具类)
java应用三(数据库索引、spring)
java应用四(连接池)
Linux
Linux基础一
Linux基础二
Mysql
mysql一
mysql二
mysql三
mysql四
java连接数据库
redis
redis一(缓存,redis简介)
redis二(单节点安装,桌面插件)
redis三(指令的使用)
redis四(java与redis的连接,基本指令在java中的操作)
redis五(练习)
redis七(持久化)
redis九(集群安装)
Hadoop
hadoop学习一
hadoop学习二
hadoop学习三
hadoop学习四
hadoop学习五
hadoop学习六
hadoop学习七
hadoop学习八
hadoop异常处理
hadoop基础学习九
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。