数据分区是什么?

数据库分区是一种物理数据库设计技术,DBA和数据库建模人员对其相当熟悉。

分区把一大块数据分成了n小块,这样查询的时候很快定位到某一小块上,在小块中寻址要快很多;

多大的数据量才需要分区?

参考标准,如果一张表的记录超过在超过1000w,并以每月百万的数据量增长,那需要分区。

为什么需要数据分区?

性能提升;方便管理;避免数据倾斜

改善数据库的结构有两种,一种是采用存储过程代替普通的SQL语句,

另外一种就是使用数据库系统中增强索引和规划分区表进行优化,

数据分区主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减响应时间。

有几种常见的数据分区?各自的优缺点 (基于mysql)

行分区 ----按日期的分区

列分区--- 参数值个数比较少 国际化按国家的分区

range分区:行数据基于属于一个给定连续区间的列值被放入分区,mysql5.5开始支持range columns的分区。

list分区:分区面向的是离散的值,mysql5.5支持list columns。

hash分区:根据用户自定义的表达式的返回值来进行分区,返回值不能为负数。

key分区:根据MYSQL数据库提供的哈希函数来进行分区。

谨记:无论使用何种类型的分区,分区总是在创建时就自动的顺序编号,且从0开始记录;

只有RANGE和LIST支持子分区,但是子分区内只能使用HASH和KEY分区。

5.hive分区

因为分区列的值要转化为文件夹的存储路径,

在表的数据文件中实际上并不保存分区列的信息与数据。

数据是根据文件夹的名字读取来的,而不是实际从数据文件中读取来的。

一般向分区表中插入数据时系统会校验数据是否符合该分区,如果不符合会报错。

而在hive中,向某个分区中插入什么样的数据完全是由人来控制的。

动态分区可以根据查询得到的数据自动匹配到相应的分区中去。

先设置hive.exec.dynamic.partition参数值为true,默认值为false,即不允许使用:

如果源数据对应的province子分区不存在,则会自动创建,非常方便,

而且避免了人工控制插入数据与分区的映射关系存在的潜在风险。

为了让分区列的值相同的数据尽量在同一个mapreduce中,

这样每一个mapreduce可以尽量少的产生新的文件夹,

可以借助distribute by的功能,将分区列值相同的数据放到一起.

附distributed by

ditribute by是控制map的输出在reducer是如何划分的,举个例子,我们有一张表,mid是指这个store所属的商户,money是这个商户的盈利,name是这个store的名字

store:

midmoneyname

AA15.0商店1

AA20.0商店2

BB22.0商店3

CC44.0商店4

执行hive语句:

select mid, money, name from store distribute by mid sort by mid asc, money asc

我们所有的mid相同的数据会被送到同一个reducer去处理,这就是因为指定了distribute by mid,这样的话就可以统计出每个商户中各个商店盈利的排序了(这个肯定是全局有序的,因为相同的商户会放到同一个reducer去处理)。这里需要注意的是distribute by必须要写在sort by之前。

mysql distribute by_hive与mysql的数据分区的异同相关推荐

  1. mysql distribute by_Hive学习(八) 排序:order by、sort by、distribute by、cluster by

    hive中有四种排序: 1.全局排序:order by 2.内部排序:sort by 3.分区排序:distribute by 4.组合排序:cluster by 全局排序:order by 说明:全 ...

  2. mysql distribute by_Hive order by、distribute by、sort by和cluster by

    order by order by 会对数据进行全局排序,和oracle和mysql等数据库中的order by 效果一样,它只在一个reduce中进行所以数据量特别大的时候效率非常低. 而且当设置 ...

  3. cass道路道路设计参数文件命令为什么没反应_为什么MySQL不建议使用delete删除数据?...

    前言 我负责的有几个系统随着业务量的增长,存储在MySQL中的数据日益剧增,我当时就想现在的业务方不讲武德,搞偷袭,趁我没反应过来把很多表,很快,很快啊都打到了亿级别,我大意了,没有闪,这就导致跟其J ...

  4. mysql partition 语法,MySQL与瀚高数据库的范围分区的语法及实例(APP)

    目录 环境 文档用途 详细信息 环境 系统平台:Microsoft Windows (64-bit) 10 版本:5.6.4 文档用途 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就 ...

  5. 使用superset完成mysql数据库或者hive数据库的数据可视化

    虚拟机安装步骤 注意事项:以下bigdata100均记得更换为bigdata1即可 确保本地电脑已经安装好了VMware Workstation Pro 下载地址:下载 VMware Workstat ...

  6. cass道路道路设计参数文件命令为什么没反应_面试官不讲武德问我:为什么MySQL不建议使用delete删除数据?

    有情怀,有干货,微信搜索[三太子敖丙]关注这个不一样的程序员. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的系列文章. ...

  7. mysql做十亿条数据查询_数据库优化:mysql数据库单机数十亿数据查询设计

    很久没写文章,是不是想着写点什么东西,分享下我的数据库设计思路,主要是针对单机数十亿及以上数据查询优化技巧. 如果只是简单的查询,没有频繁的写入操作,对查询速度不要求在毫秒级别,就不需要什么大型的数据 ...

  8. mysql 存储模式_FriendFeed 如何使用 MySQL 来存储无模式的数据

    背景 我们使用MySQL存储了FriendFeed的所有数据.数据库随着用户基数的增长而增长了很多.现在已经存储了超过2.5亿条记录与一堆涵盖了从评论和"喜欢"到好友列表的其他数据 ...

  9. 面试官不讲武德问我:为什么MySQL不建议使用delete删除数据?

    有情怀,有干货,微信搜索[三太子敖丙]关注这个不一样的程序员. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的系列文章. ...

最新文章

  1. 如何更改linux文件目录拥有者及用户组
  2. 周源:知乎的未来是什么
  3. 通过History Trends Unlimited通过统计台式机Edge浏览器Top10网页历史访问量(截止至2021.11.23)
  4. sklearn中eof报错_sklearn中的数据预处理和特征工程
  5. 统计学-自然语言处理
  6. jdk1.8要安装什么mysql_Window下安装JDK1.8+Tomcat9.0.27+Mysql5.7.28的教程图解
  7. 调试技术: Linux core dump file
  8. Codeforces Round #529 (Div. 3) 题解
  9. W Zong / A Robust Open-source Algorithm to Detect Onset and Duration of QRS Complexes
  10. OpenJ_POJ C16B Robot Game 打表找规律
  11. wps小写金额转大写快捷键_WPS轻松办公—将数字转换中文大写的两种方法
  12. 微信公众号开启服务器配置流程及注意事项
  13. 《富爸爸穷爸爸》书摘-富爸爸穷爸爸
  14. 手机lbs位置服务盘点
  15. 汪源:数据分析热词迭出,“三个统一”值得关注
  16. 关于自制CMSIS_DAP离线下载器下载算法的代码说明:“0xE00ABE00, 0x062D780D, 0x24084068, 0xD3000040, 0x1E644058, 0x1C49D1FA“
  17. 【shell】判断语句、循环语句
  18. 如何搭建vue脚手架
  19. 算法:动态规划——线性模型之小朋友过桥
  20. 多媒体网络的分布式知识要点

热门文章

  1. Allegro如何打开和关闭飞线操作指导
  2. C# 正则表达式 Regex类的使用
  3. aecmap快捷键_arcmap快捷键
  4. 老徐FrankXuLei 受邀为中国东方航空上海研发中心讲授微软.NET企业开发课程
  5. js 获取指定日期的前几天日期或后几天日期
  6. Centos7搭建Frps服务端的教程
  7. 宝宝吃饭不乖,怎么办?
  8. SAP S/4 HANA物料账实际成本:理解版本迁移时的基本改变和影响
  9. 个性化茅台之中国酒韵·十大人物
  10. html5跳动的心电图,jquery制作心电图跳动特效