当前位置: 首页 > news >正文

北京网站推广排名公司沈阳建设工程网

北京网站推广排名公司,沈阳建设工程网,wordpress忘记后台登录地址,wordpress wpjam分区表和分桶表 文章目录分区表和分桶表分区表语法加载数据增加分区删除分区查看分区表有多少分区查看分区表结构动态分区开启动态分区功能(默认 true,开启)设置为非严格模式在所有执行 MR 的节点上,最大一共可以创建多少个动态分…

分区表和分桶表

文章目录

  • 分区表和分桶表
  • 分区表
    • 语法
      • 加载数据
      • 增加分区
      • 删除分区
      • 查看分区表有多少分区
      • 查看分区表结构
    • 动态分区
    • 开启动态分区功能(默认 true,开启)
      • 设置为非严格模式
      • 在所有执行 MR 的节点上,最大一共可以创建多少个动态分区。默认 1000
      • 在每个执行 MR 的节点上,最大可以创建多少个动态分区。
      • 整个 MR Job 中,最大可以创建多少个 HDFS 文件。默认 100000
      • 当有空分区生成时,是否抛出异常
  • 分桶表
    • 创建分桶表
    • 查看表结构
    • 导入数据
    • 分桶规则
  • 区别


分区表

分区表实际上就是对应一个 HDFS 文件系统上的独立的文件夹,该文件夹下是该分区所有的数据文件。
Hive 中的分区就是分目录,把一个大的数据集根据业务需要分割成小的数据集。在查询时通过 WHERE 子句中的表达式选择查询所需要的指定的分区,这样的查询效率会提高很多,所以我们需要把常常用在 WHERE 语句中的字段指定为表的分区字段。
这样查询时只要扫描需要的文件即可

语法

create table dept_partition(
deptno int, dname string, loc string
)
partitioned by (day string)
row format delimited fields terminated by '\t';

注意:分区字段不能是表中已经存在的数据,可以将分区字段看作表的伪列。

加载数据

load data local inpath '/opt/text.txt' into table dept_partition partition(field=xxxx);

注意:分区表加载数据时,必须指定分区

增加分区

增加单个

alter table dept_partition add partition(field=xxxx);

增加多个(无逗号)

alter table dept_partition add partition(field=xxxx) partition(field=yyyy);

删除分区

删除单个

alter table dept_partition drop partition (field=xxxx);

删除多个(有逗号

alter table dept_partition drop partition (field=xxxx), partition(field=yyyy);

查看分区表有多少分区

show partitions dept_partition;

查看分区表结构

desc formatted dept_partition;

动态分区

关系型数据库中,对分区表 Insert 数据时候,数据库自动会根据分区字段的值,将数据插入到相应的分区中,Hive 中也提供了类似的机制,即动态分区(Dynamic Partition),只不过,使用 Hive 的动态分区,需要进行相应的配置。

开启动态分区功能(默认 true,开启)

set hive.exec.dynamic.partition=true;

设置为非严格模式

动态分区的模式,默认 strict,表示必须指定至少一个分区为静态分区,nonstrict 模式表示允许所有的分区字段都可以使用动态分区。

set hive.exec.dynamic.partition.mode=nonstrict;

在所有执行 MR 的节点上,最大一共可以创建多少个动态分区。默认 1000

set hive.exec.max.dynamic.partitions=1000;

在每个执行 MR 的节点上,最大可以创建多少个动态分区。

该参数需要根据实际的数据来设定。比如:源数据中包含了一年的数据,即 day 字段有365 个值,那么该参数就需要设置成大于 365,如果使用默认值 100,则会报错。

set hive.exec.max.dynamic.partitions.pernode=100;

整个 MR Job 中,最大可以创建多少个 HDFS 文件。默认 100000

set hive.exec.max.created.files=100000;

当有空分区生成时,是否抛出异常

一般不需要设置。默认 false

set hive.error.on.empty.partition=false;

分桶表

分区提供一个隔离数据和优化查询的便利方式。不过,并非所有的数据集都可形成合理的分区。对于一张表或者分区,Hive 可以进一步组织成桶,也就是更为细粒度的数据范围划分。分桶是将数据集分解成更容易管理的若干部分的另一个技术。
分区针对的是数据的存储路径,分桶针对的是数据文件。

创建分桶表

create table stu_buck(id int, name string
)
clustered by(id) into 4 buckets
row format delimited fields terminated by '\t';

查看表结构

desc formatted stu_buck;

导入数据

load data inpath '/student.txt' into table stu_buck;

分桶规则

Hive 的分桶采用对分桶字段的值进行哈希,然后除以桶的个数求余的方式决定该条记录存放在哪个桶当中

(1)reduce 的个数设置为-1,让 Job 自行决定需要用多少个 reduce 或者将 reduce 的个数设置为大于等于分桶表的桶数
(2)从 hdfs 中 load 数据到分桶表中,避免本地文件找不到问题
(3)不要使用本地模式

区别

分区表是指按照数据表的某列或某些列分为多个区,区从形式上可以理解为文件夹。
分桶是相对分区进行更细粒度的划分。分桶将整个数据内容按照某列属性值的hash值进行区分,如果按照name 属性分为3个桶,就是对name属性值的hash值对3取模,按照取模结果对数据分桶。如取模结果为0的数据记录存放到一个文件,取模为1的数据存放到一个文件,取模为2的数据存放到一个文件。

从表现形式形式上

分区表是一个目录,分桶表是文件。

从创建语句上

分区表使用partitioned by 子句指定,以指定字段为伪列,需要指定字段类型。

分桶表由clustered by 子句指定,指定字段为真实字段,需要指定桶的个数。

从数量上

分区表的分区个数可以增长,分桶表一旦指定,不能增长。

作用上

分区避免全表扫描,根据分区列查询指定目录提高查询速度

分桶保存分桶查询结果的分桶结构(数据已经按照分桶字段进行了hash散列)

分桶表数据进行抽样和join时可以提高MR程序效率

http://www.yayakq.cn/news/651449/

相关文章:

  • 交互式网站制作长尾词挖掘工具爱站网
  • 旅游区网站开发msn网站制作
  • 手机网站建站教程网站编程用什么语言好
  • co域名 大网站wordpress 媒体库 最大
  • 做外贸网站方案私有云可以做网站
  • 珠宝网站谁家做的好山西省住房建设厅网站下载
  • 北海建设厅网站html编辑器怎么用
  • 湖州童装网站制造网站开发
  • 开锁公司网站源码wordpress seo 百度
  • 海誉网站定制设计一套app页面多少钱
  • 做的网站怎样更新盐城网站建设效果
  • 做网站的赚钱吗专门做别墅的网站
  • 网站开发 价格差异金华网站建设系统
  • 四川省广安建设局网站WordPress会员积分插件
  • 好用的网站后台管理系统西安哪个公司可以做网站
  • 公司网站建设开发济南兴田德润简介图片如何规划建设一个企业网站
  • 学校网站做网页飘窗怎么做用来做调查问卷的网站
  • wordpress站群 优化网站建设报价多少钱
  • 领卷网站怎么做discuz做网站赚钱经历
  • 网站建设用书河北省两学一做网站
  • 网站建设执行力wordpress linux权限设置
  • 网站开发面板聊城高新区建设局网站
  • 网站建设记什么科目广西桂林旅游几月份去最好
  • 商城建站系统多少钱wordpress优酷插件下载
  • 康巴什网站建设免费中文网站模板下载
  • 专业网站建站费用怎样进行关键词推广
  • 广州网站推广哪家好c2c交易会被判刑嘛
  • 吉林做网站多少钱iis 多网站
  • 怎样更换动易2006网站模板企业网站开发韵茵建站
  • 印度做杂质的网站wordpress 和 shopify