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

数据分区

数据库分区的主要目的是为了在特定的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会只重写当前分区数据。

转载于:https://my.oschina.net/sshuj/blog/852596

一文搞定hive之insert into 和 insert overwrite与数据分区相关推荐

  1. 一文搞定 Hive 表分隔符

    Hive 中没有定义专门的数据格式,数据格式可以由用户指定,用户定义数据格式需要指定三个属性:列分隔符(通常为空格."\t"."\x001″).行分隔符("\n ...

  2. 一文搞定Hive常用运算和函数

    Hive常用运算和函数 关系运算 等值比较: = 不等值比较: <> 小于比较: < 小于等于比较: <= 大于等于比较: >= 空值判断: IS NULL 非空判断: ...

  3. php带参数单元测试_一文搞定单元测试核心概念

    基础概念 单元测试(unittesting),是指对软件中的最小可测试单元进行检查和验证,这里的最小可测试单元通常是指函数或者类.单元测试是即所谓的白盒测试,一般由开发人员负责测试,因为开发人员知道被 ...

  4. 【Python基础】一文搞定pandas的数据合并

    作者:来源于读者投稿 出品:Python数据之道 一文搞定pandas的数据合并 在实际处理数据业务需求中,我们经常会遇到这样的需求:将多个表连接起来再进行数据的处理和分析,类似SQL中的连接查询功能 ...

  5. 一文搞定Swing和Qt按钮和文本框的创建

    一文搞定Swing和Qt按钮和文本框的创建 Qt的截图 java的 源码 package com.lujun;import java.awt.Container;import javax.swing. ...

  6. 一文搞定C#关于NPOI类库的使用读写Excel以及io流文件的写出

    一文搞定C#关于NPOI类库的使用读写Excel以及io流文件的写出 今天我们使用NPOI类库读写xlsx文件, 最终实现的效果如图所示 从太平洋官网下载相应的类库,大概4~5MB,不要从github ...

  7. 一文搞定Qt读写excel以及qt读写xml数据

    一文搞定Qt读写excel以及qt读写xml数据 最终的实现效果图 RC_ICONS = logo.ico .pro文件同级目录下加入 logo.ico 图标文件,运行文件,文件的图标就被写入软件 u ...

  8. 一文搞定 Spring Data Redis 详解及实战

    转载自  一文搞定 Spring Data Redis 详解及实战 SDR - Spring Data Redis的简称. Spring Data Redis提供了从Spring应用程序轻松配置和访问 ...

  9. 一文搞定面试中的二叉树问题

    一文搞定面试中的二叉树问题 版权所有,转载请注明出处,谢谢! http://blog.csdn.net/walkinginthewind/article/details/7518888 树是一种比较重 ...

最新文章

  1. 办公室“暧昧”的几种结局。
  2. python生成wheel包注意事项
  3. POJ2817 WordStack(状压DP)
  4. 神经网络 | 基于脉冲耦合神经网络(PCNN)的图像特征提取(Matlab源代码)
  5. jQuery ajax - getScript() 方法
  6. 动画演示 Delphi 2007 IDE 功能[3] - 修改属性
  7. qt 表格中插入一行_在EXCEL表格中,快速插入多行、多列的技巧
  8. PHP判断msg,小程序 msgSecCheck 检查内容是否违规违法,但所有内容都可通过问题...
  9. 谷歌发布机器学习云平台 开放语音识别API
  10. __str__和__repr__
  11. 随机变量的数字特征(期望、方差、标准差、矩、协方差...)
  12. Python 通过打码平台实现验证码
  13. Matlab绘制树形图
  14. 测试经验 --- 那些躲在角落的缺陷
  15. 全志H616——刷机以及初步配置
  16. 基于java的百度语音识别示例
  17. 皮尔森相关性系数的计算python代码(三)
  18. 阿克曼移动机器人优势介绍
  19. php 表格导入excel插件,BootStrap Fileinput插件和表格插件相结合实现导入Excel数据的文件上传、预览、提交的步骤...
  20. 杰理之关于芯片烧录电压的问题?【篇】

热门文章

  1. 手机百度浏览器ua标识在哪里_荣耀play浏览器ua标识在哪里
  2. EAN13条形码了解,有c测试代码
  3. 超级计算机图片高清,专业不止一点,vivo X50 Pro+后置四摄,高清1亿模式亮点十足...
  4. Type-C保温杯取电方案
  5. 铸造工艺问题6——砂型涂料多厚,刷几次?芯头斜度?新旧砂的作用树脂、固化剂的作用
  6. tableau关于增长率、占比的表计算实践应用
  7. 调用大智慧L2接口是什么原理?作用是什么?
  8. linux下TC+HTB流量控制
  9. js仿苹果风格弹出框alert插件
  10. jre精简详细教程(附精简工具)