一文搞定hive之insert into 和 insert overwrite与数据分区
来源:互联网 发布:为什么优酷提示没网络 编辑:程序博客网 时间:2024/05/17 08:32
版权声明:本文为博主原创文章,未经博主允许不得转载。
数据分区
数据库分区的主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减响应时间,主要包括两种分区形式:水平分区与垂直分区。水平分区是对表进行行分区。而垂直分区是对列进行分区,一般是通过对表的垂直划分来减少目标表的宽度,常用的是水平分区。
hive建立分区语法:
create external table if not exists tablename(
a string,
b string)
partitioned by (year string,month string)
row format delimited fields terminated by ',';
hive通常有三种方式对包含分区字段的表进行数据插入:
1)静态插入数据:要求插入数据时指定与建表时相同的分区字段,如:
insert overwrite tablename (year='2017', month='03') select a, b from tablename2;
2)动静混合分区插入:要求指定部分分区字段的值,如:
insert overwrite tablename (year='2017', month) select a, b from tablename2;
3)动态分区插入:只指定分区字段,不用指定值,如:
insert overwrite tablename (year, month) select a, b from tablename2;
hive动态分区设置相关参数:
Hive.exec.dynamic.partition 是否启动动态分区。false(不开启) true(开启)默认是 false
hive.exec.dynamic.partition.mode 打开动态分区后,动态分区的模式,有 strict和 nonstrict 两个值可选,strict 要求至少包含一个静态分区列,nonstrict则无此要求。各自的好处,大家自己查看哈。
hive.exec.max.dynamic.partitions 允许的最大的动态分区的个数。可以手动增加分区。默认1000
hive.exec.max.dynamic.partitions.pernode 一个 mapreduce job所允许的最大的动态分区的个数。默认是100
数据插入之insert into 和 insert overwrite
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。通常hive包括以下四种数据导入方式:
(1)、从本地文件系统中导入数据到Hive表;
(2)、从HDFS上导入数据到Hive表;
(3)、在创建表的时候通过从别的表中查询出相应的记录并插入到所创建的表中;
(4)、从别的表中查询出相应的数据并导入到Hive表中。
-
INSERT INTO
- 使用样例
insert into table tablename1 select a, b, c from tablename2;
-
INSERT OVERWRITE
- 使用样例
insert overwrite table tablename1 select a, b, c from tablename2;
-
两者的异同
insert into 与 insert overwrite 都可以向hive表中插入数据,但是insert into直接追加到表中数据的尾部,而insert overwrite会重写数据,既先进行删除,再写入。如果存在分区的情况,insert overwrite会只重写当前分区数据。
- 一文搞定hive之insert into 和 insert overwrite与数据分区
- Hive之insert into 和insert overwrite
- Hive之insert into 和insert overwrite
- Hive之insert into 和insert overwrite
- Hive 的insert into 和 insert overwrite
- hive insert into语句 和 insert overwrite语句
- hive insert into语句 和 insert overwrite语句
- 测试hive操作insert into和insert overwrite对elasticsearch中数据的影响
- HIVE中insert into 和overwrite的用法--转载
- HIVE中insert into 和overwrite的用法--转载
- HIVE外部表和管理表区别以及INSERT INTO/INSERT OVERWRITE区别
- insert 和 insert into
- hive insert overwrite directory 报错
- 执行数据导入的Bulk Insert与Insert Into
- insert into插入数据
- Hive insert into语句用法
- Hive insert into话语用法
- Hive中的insert into语句
- Android okhttp+rxjava实现多文件下载和断点续传
- Apache和Tomcat区别
- Nginx是什么?Nginx介绍及Nginx的优点
- 一致性hash算法
- PostgreSQL 安装与读写分离配置
- 一文搞定hive之insert into 和 insert overwrite与数据分区
- Struts2启动问题:ClassNotFoundException: org...dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
- 大数据前言
- 轻松搞定virtualbox虚拟机安装centos系统集群
- c 点滴
- 断点续传 进度条 开 始 暂停 继续的简单按钮实现
- Tor
- 关于Android7.0及以上版本FileUriExposedException的问题
- 深度学习数学基础之线性代数