精华内容
下载资源
问答
  • hive分桶

    2020-12-11 23:06:11
    hive分桶创建分桶表导入数据三级目录 创建分桶表 建表时指定了CLUSTERED BY,这个表称为分桶表! 分桶: 和MR中分区是一个概念! 把数据分散到多个文件中! create table stu_buck(id int, name string) ...

    创建分桶表

        建表时指定了CLUSTERED BY,这个表称为分桶表!
    	分桶:  和MR中分区是一个概念! 把数据分散到多个文件中!
    	
    		create table stu_buck(id int, name string)
    		clustered by(id) 
    		SORTED BY (id desc)
    		into 4 buckets
    		row format delimited fields terminated by '\t';
    

    导入数据

    创建临时表:

    	create table stu_buck_tmp(id int, name string)
    	row format delimited fields terminated by '\t';
    

    向临时表导入数据

    	 load data local inpath '/home/atguigu/hivedatas/student' into table  stu_buck_tmp;
    

    导入数据之前:
    需要打开强制分桶开关: set hive.enforce.bucketing=true;
    需要打开强制排序开关: set hive.enforce.sorting=true;
    导数据:

     insert into table stu_buck select * from stu_buck_tmp;
    

    在这里插入图片描述

    抽样查询

    格式:select * from 分桶表 tablesample(bucket x out of y on 分桶表分桶字段);
    要求:
    ①抽样查询的表必须是分桶表!
    ②bucket x out of y on 分桶表分桶字段
    假设当前表一共分了z个桶
    x: 从当前表的第几桶开始抽样
    0<x<=y
    y: z/y 代表一共抽多少桶!
    要求y必须是z的因子或倍数!

    怎么抽: 从第x桶开始抽样,每间隔y桶抽一桶,知道抽满 z/y桶
    
    bucket 1 out of 2 on id:  从第1桶(0号桶)开始抽,抽第x+y*(n-1),一共抽2桶   : 0号桶,2号桶
    

    select * from stu_buck tablesample(bucket 1 out of 2 on id)

    bucket 1 out of 1 on id:  从第1桶(0号桶)开始抽,抽第x+y*(n-1),一共抽4桶   : 0号桶,2号桶,1号桶,3号桶
    
    bucket 2 out of 4 on id:  从第2桶(1号桶)开始抽,一共抽1桶   : 1号桶
    
    bucket 2 out of 8 on id:  从第2桶(1号桶)开始抽,一共抽0.5桶   : 1号桶的一半
    

    在这里插入图片描述

    展开全文
  • Hive 分桶

    2021-01-07 12:01:49
    分桶:将数据集分解成更容易管理的若干部分。 分区针对的是数据的存储路径,分桶针对的是数据文件。 创建 查看结果: 抽样查询 语法:TABLESAMPLE(BUCKET x OUT OF y) y必须是table总bucket数的倍数或者因子。...
  • Hive分桶

    2019-06-29 11:43:59
    一、分桶 ...2.对于hive中每一个表、分区都可以进一步进行分桶。 3.由列的哈希值除以的个数来决定每条数据划分在哪个中。 适用场景:数据抽样sampling、map-join 二、开启分桶支持 set hive.enfo...

    一、分桶

    分桶是用来操作文件的,将一个目录下的文件,划分为多个目录,粒度更细了。

    1.分桶表是对列值取哈希值的方式,将不同数据放到不同文件中存储(join的时候能有效的避免全表扫描)。
    2.对于hive中每一个表、分区都可以进一步进行分桶。
    3.由列的哈希值除以桶的个数来决定每条数据划分在哪个桶中。

    适用场景:数据抽样sampling、map-join

    二、开启分桶支持

    set hive.enforce.bucketing=true;

    1.默认:false;设置为true之后,mr运行时会根据bucket的个数自动分配reduce task个数。(用户也可以通过mapred.reduce.tasks自己设置reduce任务个数,但分桶时不推荐使用)

    2.注意:一次作业产生的桶(文件数量)和reduce task个数一致。

    往分桶表中加载数据:

    insert into table bucket_table select columns from tbl;
    insert overwrite table bucket_table select columns from tbl;
    

    三、桶表 抽样查询

    select * from bucket_table tablesample(bucket 1 out of 4 on columns);
    

    TABLESAMPLE语法:
    TABLESAMPLE(BUCKET x OUT OF y)
    x:表示从哪个bucket开始抽取数据
    y:必须为该表总bucket数的倍数或因子

    比如说:当表总bucket数为32时 TABLESAMPLE(BUCKET 3 OUT OF 8),抽取哪些数据?
    从第3个桶开始,bucket=32/8=4(个桶);so,我要随机抽样取的桶为 3 , 11 , 19 ,27
    如果, x = 2, y = 256 ,从2开始取,取1/8份数据。(这种一般没人用)

    四、分桶案例

    首先创建一个普通表:

    CREATE TABLE psn7( id INT, name STRING, age INT)
    ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
    

    测试数据如下:

    1,tom,11
    2,cat,22
    3,dog,33
    4,hive,44
    5,hbase,55
    6,mr,66
    7,alice,77
    8,scala,88
    

    写入数据:

    hive> load data local inpath '/root/data4' into table psn7;
    

    创建分桶表:

    CREATE TABLE psnbucket( id INT, name STRING, age INT)
    CLUSTERED BY (age) INTO 4 BUCKETS 
    ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
    

    将普通表数据加载到分桶表:

    insert into table psnbucket select id, name, age from psn7;
    

    抽样:

    select id, name, age from psnbucket tablesample(bucket 2 out of 4 on age);
    

    结果:
    从第二个桶开始,取4/4=1个桶
    在这里插入图片描述

    展开全文
  • hive 分桶

    2018-08-22 18:03:28
    hive时针对某一列进行分桶,提高查询效率 hive采用对列值哈希hash,除以个数求余的方式,决定记录存放位置 clustered by(col_name) sorted by(col_name) into num buckets 根据表分桶 create table tb_...

    创建分桶

    hive时针对某一列进行分桶,提高查询效率
    hive采用对列值哈希hash,除以桶个数求余的方式,决定记录存放位置

    clustered by(col_name)
    sorted by(col_name)
    into num buckets

    根据表分桶

    create table tb_name (name string,age int)
        CLUSTERED BY (name)
        INTO 20 BUCKETS

    根据分区分桶

    create table tb_name(name string,age 20)
        PARTITIONED BY (sex int)
        clustered by (name)
        into 30 buckets;

    加载

    • 一个桶就是一个文件
    • load方式不是把数据放在某一文件中,而是复制或剪切的方式直接导入
      查询数据->找相应桶->load数据文件->结果
    • 故采用insert into table的方式将数据插入到不同的桶中。
    展开全文
  • 13-Hive分桶优化

    2020-02-18 21:24:01
    Hive函数思维导图,便捷整理思路,Hive参数、Hive分桶Hive视图、Hive运行方式、Hive权限管理、Hive优化
  • Hive分桶

    2021-04-05 09:09:51
    Hive分桶

    Hive分桶表

    分区的使用场景
    • 分区提供了一个隔离数据和优化查询的便利方式,不过并非所有的数据都可形成合理的分区,尤其是需要确定合适大小的分区划分方式,不合理的数据分区划分方式可能导致有的分区数据过多,而某些分区没有什么数据的尴尬情况。

    • 分桶是将数据集分解为更容易管理的若干部分的另一种技术。

    数据分桶的原理
    • 和MR中的HashPartitioner的原理一样。
    • MR中:按照key的hash值去模除以reduceTask的个数。
    • Hive中:按照分桶字段的hash值去模除以分桶的个数。
      Hive也是针对某一列进行桶的组织。Hive采用对列值哈希,然后除以桶的个数求余的方式决定该条记录放在哪个桶中。
    • 每个桶就是表目录里的一个文件,一个作业产生的桶和reduce任务个数相同。
    数据分桶的作用
    • 方便抽样
      使取样更高效。在处理大规模数据集时,在开发和修改查询的阶段,如果能在数据集的一小部分数据上试运行查询,会带来很多方便。

    • 提高join查询效率
      桶为表加上了额外的结构,Hive在处理有些查询时能利用这个结构。具体而言,连接两个在相同列上划分了桶的表,可以使Map端连接更高效的实现。比如join操作,对于join操作两个表有一个相同的列,如果对这两个表都进行了桶操作,那么将保存相同列值的桶进行join操作就可以,可以大大减少join的数据量。

    创建数据分桶表
    • cluster by(col,col) into 100buckets
    • 分桶中的字段是原始数据中存在的。分区表,分区字段在原始文件中并不存在。
      原文参考此处
    展开全文
  • Hive 分桶

    千次阅读 2017-02-05 14:29:42
    hive 分桶
  • Hive分桶使用

    2019-08-19 00:30:10
    Hive中的每一个表,每一个分区都可以进行分桶,表或者分区实际上是以文件的形式在hdfs上存储,而分桶物理上相当于将一个文件分成几个文件进行存储,分桶用于大规模数据集。 分桶的使用 1.建表时设置分桶 create ...
  • 7-hive 分桶

    2017-03-31 12:47:05
    hive 分桶介绍
  • Hive(六) Hive 分桶

    2020-09-22 16:05:13
    1 hive 分桶概述 分桶表是对列值取哈希值的方式,将不同数据放到不同文件中存储。 对于 hive 中每一个表、分区都可以进一步进行分桶。 由列的哈希值除以的个数来决定每条数据划分在哪个中。 适用场景: ...
  • Hive分桶表总结

    2020-10-22 16:03:53
    Hive分桶表设计原因分桶原理创建分桶表载入数据按id升序排序建表分桶分桶作用提高join 查询效率提高抽样效率抽样语法 设计原因        Hive中分区表提供了一个隔离数据和优化...
  • hive分桶笔记

    2018-02-21 21:31:49
    hive分桶,一般在hive数据表中查询出来的数据插入到分桶表中,一般不在load数据时使用分桶分桶实例:set hive.enforce.bucketing = true;如果不设置这个分桶不生效set mapreduce.job.reduce = 4;drop table stu_...
  • Hive分桶

    2017-12-05 18:59:00
    二.Hive分桶 1.创建分桶表 create table t_buck (id string ,name string) clustered by (id) //根据id分桶 sorted by (id) //根据id排序 into 4 buckets //分为4个 row format delimited fields ...
  • Hive分桶表性能测试

    2020-12-14 11:52:50
    环境说明: ...目的:测试Hive分桶表的在大数据量下的查询性能 当前spark2.4.0版本不支持spark写入表https://issues.apache.org/jira/browse/SPARK-19256 1、样本数据:1天 表(SQL) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,194
精华内容 4,877
关键字:

hive分桶