一、外部表和内部表的区别
(1)创建表时指定external关键字,就是外部表,不指定external就是内部表
(2)内部表删除后把元数据和数据都删除了,外部表删除后只是删除了元数据,不会删除hdfs上的数据文件
(3)外部表创建表时通过location指定存放表数据的hdfs上的路径,而内部表是默认存放在hive-site.xml中
设置的warehouse中,会在warehouse这个目录下以表名创建文件夹,数据就存放在这里。
 
二、.hive表分区
 
hive表分区其实就是分目录,表是大目录,分区是子目录,通过分区来实现分目录存放数据
分区由于是目录,不能带有特殊符号,分区列的值要转化为文件夹的存储路径,所以如果分区列的值中包含特殊值,如 '%', ':', '/', '#',它将会被使用%加上2字节的ASCII码进行转义,分区字段并不是表中真实存在的字段,而是一个或者多个伪列。表的数据文件中实际上并不保存分区列的信息与数据,而是用这个字段来划分数据的
存放目录,使用分区可以加快查询速度,查询时可以直接查询某一个分区下的数据,而不用管其他分区的数据
 
 
静态分区:
写入数据的时候就知道了(指定了)分区的名字
 
 
动态分区:
在写入数据的时候不知道分区的名字,当有符合分区条件的数据的时候会给它增加新的分区。
动态分区需要提前设置好连个参数,不然建分区的时候会抛异常
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nostrict;
 
动态分区:当select的结果记录数大于零的时候才会创建分区
静态分区只要指定了就一定会创建。
 
动态分区会为每一个分区配上reduce数。比如设置了set mapreduce.job.reduces=100.设置了reduce的个数。
当有两个分区,如果每一个结果集中都有数据,会为每一个分区配上100个reduce数,也就是namenode同时处理200个文件写操作,
这种操作如果在分区值很多的时候容易把namenode搞挂掉,因此写动态分区的时候要清楚分区的值和合理设置reduce的数量
 
三、分桶
桶是更细粒度的划分, 相同的数据分到一个桶里面,减少数据访问的量,对每一个表或者分区,hive可以进行进一步的分桶
 
对列的值哈希然后除以桶的个数求与的方式决定这条数据放到哪个桶里面去。
 
(1)分桶可以获得更高查询效率
(2)桶为表加上了额外的结构,hive查询的时候可以利用这种结构
两个表连接时相同的列上划分了桶的表可以使用map端进行连接,join连接时两个表有相同的列,如果这两个表都进行了桶的操作,那么这个保存相同列值得桶进行join操作就可以减少join的数量
 
 
分桶需要设置两个参数:
set hive.enforce.bucketing=true;
set hive.enforce.sorting=true;
 
四、数据
数据遵循的规则是相同数据尽量聚集在一起
这样数据访问时可以直接访问计算节点的本地数据,数据本地性,降低网络数据的流量和负载
数据存储方式
三种常用的方式:
seqencefile 压缩效率低,查询速度一般
textfile(默认存储方式)不做压缩,磁盘开销大,解析开销大,加载速度最快
rcfile (0.6.0之后支持) 压缩率最高,查询效率最高,数据加载最慢
另外还有
orc(0.11.0之后)
parquet(0.13.0)
avro(0.14.0)
inputformat

hive 表优化的更多相关文章

  1. Hive SQL 优化面试题整理

    Hive优化目标 在有限的资源下,执行效率更高 常见问题: 数据倾斜 map数设置 reduce数设置 其他 Hive执行 HQL --> Job --> Map/Reduce 执行计划 ...

  2. Hive:表1inner join表2结果group by优化

    问题背景 最近遇到一个比较棘手的事情:hive sql优化: lib表(id,h,soj,noj,sp,np)         --一个字典表 mitem表(md,mt,soj,noj,sp,np)- ...

  3. 大数据开发实战:Hive优化实战3-大表join大表优化

    5.大表join大表优化 如果Hive优化实战2中mapjoin中小表dim_seller很大呢?比如超过了1GB大小?这种就是大表join大表的问题.首先引入一个具体的问题场景,然后基于此介绍各自优 ...

  4. 大数据开发实战:Hive优化实战2-大表join小表优化

    4.大表join小表优化 和join相关的优化主要分为mapjoin可以解决的优化(即大表join小表)和mapjoin无法解决的优化(即大表join大表),前者相对容易解决,后者较难,比较麻烦. 首 ...

  5. Hive优化-大表join大表优化

    Hive优化-大表join大表优化 5.大表join大表优化 如果Hive优化实战2中mapjoin中小表dim_seller很大呢?比如超过了1GB大小?这种就是大表join大表的问题.首先引入一个 ...

  6. Hive性能优化

    1.概述 继续<那些年使用Hive踩过的坑>一文中的剩余部分,本篇博客赘述了在工作中总结Hive的常用优化手段和在工作中使用Hive出现的问题.下面开始本篇文章的优化介绍. 2.介绍 首先 ...

  7. Hive篇---Hive使用优化

    一.前述 本节主要描述Hive的优化使用,Hive的优化着重强调一个 把Hive SQL 当做Mapreduce程序去优化 二.主要优化点 1.Hive运行方式:本地模式集群模式 本地模式开启本地模式 ...

  8. Hive性能优化上的一些总结

    https://blog.csdn.net/mrlevo520/article/details/76339075 1.介绍 首先,我们来看看Hadoop的计算框架特性,在此特性下会衍生哪些问题? 数据 ...

  9. 关于hive的优化

    首先hive本质就是mapreduce,那么优化就从mapreduce开始入手. 然而mapreduce的执行快慢又和map和reduce的个数有关,所以我们先从这里下手,调整并发度. 关于map的优 ...

随机推荐

  1. InstallShield Build错误:Internal build error 6041

    点击左侧菜单: Media-Release-选择release版本(例如Release1)-Build标签-   keey unused directories 改为no(默认为yes)

  2. C语言 · 选最大数

    算法提高 选最大数   时间限制:1.0s   内存限制:512.0MB      输入3个整数a.b.c,(数的范围是[1,10000])输出其中最大的数.(用指针实现) 样例输入 2 5 1 样例 ...

  3. 【LeetCode】Permutations 解题报告

    全排列问题.经常使用的排列生成算法有序数法.字典序法.换位法(Johnson(Johnson-Trotter).轮转法以及Shift cursor cursor* (Gao & Wang)法. ...

  4. Pass的通用指令开关

    LOD: 设置:单个设置Shader.maximumLOD.全局设置Shader.globalMaximumLOD.QualitySettings里面的Maximum LODLevel 原理:小于指定 ...

  5. 微信小程序——自定义导航栏

    微信头部导航栏可能通过json配置: 但是有时候我们项目需求可能需要自定义头部导航栏,如下图所示: 现在具体说一下实现步骤及方法: 步骤: 1.在 app.json 里面把 "navigat ...

  6. Three ways to make your WPF images pop out on MouseOver

    There are a couple of ways in WPF to make an image pop out when moving mouse over it. Of course we w ...

  7. Q_UNUSED() 方法的使用

    Q_UNUSED() 没有实质性的作用,用来避免编译器警告 //比如说 int testFunc(int a, int b, int c, int d) { int e; return a+b+c; ...

  8. Python中sorted()方法的用法

    Python中sorted()方法的用法 2012-12-24 22:01:14|  分类: Python |字号 订阅 1.先说一下iterable,中文意思是迭代器. Python的帮助文档中对i ...

  9. Mxnet学习资源

    MxNet 学习笔记(1):MxNet中的NDArray http://mxnet.incubator.apache.org/api/python/symbol/symbol.html api文档 M ...

  10. Ogre 编辑器一(MyGUI+Ogre整合与主界面)

    在查看Ogre例子时,想看材质要里的纹理,着色器代码都需要每个去查找,非常麻烦.也想看更新每个Ogre里的对象后有什么效果.然后看到Compositor组件与粒子组件时,想到能实时编辑着色器代码实时更 ...