文档章节

一文搞定hive之insert into 和 insert overwrite与数据分区

sushupro
 sushupro
发布于 2017/03/06 13:57
字数 746
阅读 9526
收藏 1

版权声明:本文为博主原创文章,未经博主允许不得转载。

数据分区

        数据库分区的主要目的是为了在特定的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

  1. 使用样例

                insert into table tablename1 select a, b, c from tablename2;

  • INSERT OVERWRITE

  1. 使用样例

                insert overwrite table tablename1 select a, b, c from tablename2;

  • 两者的异同

        insert into 与 insert overwrite 都可以向hive表中插入数据,但是insert into直接追加到表中数据的尾部,而insert overwrite会重写数据,既先进行删除,再写入。如果存在分区的情况,insert overwrite会只重写当前分区数据。

  •  

© 著作权归作者所有

sushupro
粉丝 0
博文 11
码字总数 5454
作品 0
石家庄
程序员
私信 提问
hive load insert

本文主要是翻译Hive官网关于Load的解释,原文来源于:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML#LanguageManualDML-Loadingfilesintotables 介绍 Hive Load语句......

hblt-j
2018/12/12
47
1
hive 概览及dml语句

Hive Tutorial 数据单元: 分区: 每一个表可以有一个或多个分区列,用来决定数据如何存储。分区不仅仅是存储单元,而且允许用户按照条件组织分类数据,分区键列中每一个不重复的值定义一个表...

枯藤KT
2016/08/03
41
0
Hadoop Hive基础sql语法

1.DDL 操作1.建表2.3.创建简单表4.创建外部表5.建分区表6.建Bucket表7.创建表并创建索引字段ds8.复制一个空表9.显示所有表10.按正条件正则表达式显示表11.修改表结构12.表添加一列13.添加一列...

qhaiyan
2016/11/25
98
0
往HIVE表中导入导出数据的几种方式详解

一:往HIVE表中导入导出数据 语法结构:[ ]带括号的表示可选择字段 LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)......

qq_26442553
2018/03/08
0
0
Hive学习总结之三:HiveQL介绍DML

第二部分:DML DML包含如下操作: •向数据表内加载文件 •LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)] Load ......

酷帅CoolBash
2013/01/30
257
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周二乱弹 —— 开发语言和语言开发的能一样么

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @花间小酌:#今日歌曲推荐# 分享The Score的单曲《Revolution》 《Revolution》- The Score 手机党少年们想听歌,请使劲儿戳(这里) @批判派...

小小编辑
今天
647
8
oracle ORA-39700: database must be opened with UPGRADE option

ORA-01092: ORACLE instance terminated. Disconnection forced ORA-00704: bootstrap process failure ORA-39700: database must be opened with UPGRADE option 进程 ID: 3650 会话 ID: 29......

Tank_shu
今天
3
0
分布式协调服务zookeeper

ps.本文为《从Paxos到Zookeeper 分布式一致性原理与实践》笔记之一 ZooKeeper ZooKeeper曾是Apache Hadoop的一个子项目,是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它...

ls_cherish
今天
4
0
聊聊DubboDefaultPropertiesEnvironmentPostProcessor

序 本文主要研究一下DubboDefaultPropertiesEnvironmentPostProcessor DubboDefaultPropertiesEnvironmentPostProcessor dubbo-spring-boot-project-2.7.3/dubbo-spring-boot-compatible/au......

go4it
昨天
2
0
redis 学习2

网站 启动 服务端 启动redis 服务端 在redis 安装目录下 src 里面 ./redis-server & 可以指定 配置文件或者端口 客户端 在 redis 的安装目录里面的 src 里面 ./redis-cli 可以指定 指定 连接...

之渊
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部