美文网首页玩转大数据大数据
Hive实现数据抽样的三种方法

Hive实现数据抽样的三种方法

作者: 坨坨的大数据 | 来源:发表于2021-12-18 08:36 被阅读0次

在大规模数据量的数据分析及建模任务中,往往针对全量数据进行挖掘分析时会十分耗时和占用集群资源,因此一般情况下只需要抽取一小部分数据进行分析及建模操作。Hive提供了数据取样 的功能,能够根据一定的规则进行数据抽样
目前支持数据块抽样,分桶抽样和随机抽样,具体如下所示:

1. 数据块抽样(tablesample()函数)

1) tablesample(n percent)

根据hive表数据的大小按比例抽取数据,并保存到新的hive表中。如:抽取原hive表中10%的数据
(注意:测试过程中发现,select语句不能带where条件且不支持子查询,可通过新建中间表或使用随机抽样解决)

create table xxx_new 
as 
  select * 
  from xxx 
  tablesample(10 percent)

2)tablesample(n M)

指定抽样数据的大小,单位为M。

3)tablesample(n rows)

指定抽样数据的行数,其中n代表每个map任务均取n行数据,map数量可通过hive表的简单查询语句确认(关键词:number of mappers: x)

2.分桶抽样

hive中分桶其实就是根据某一个字段Hash取模,放入指定数据的桶中,比如将表table_1按照ID分成100个桶,其算法是hash(id) % 100,这样,hash(id) % 100 = 0的数据被放到第一个桶中,hash(id) % 100 = 1的记录被放到第二个桶中。创建分桶表的关键语句为:CLUSTER BY语句。

分桶抽样语法:

TABLESAMPLE (BUCKET x OUT OF y [ON colname])

其中x是要抽样的桶编号,桶编号从1开始,colname表示抽样的列,y表示桶的数量。
例如:将表随机分成10组,抽取其中的第一个桶的数据

select * 
from table_01 
tablesample(bucket 1 out of 10 on rand())

3. 随机抽样(rand()函数)

1)使用rand()函数进行随机抽样
limit关键字限制抽样返回的数据,其中rand函数前的distribute和sort关键字可以保证数据在mapper和reducer阶段是随机分布的,案例如下:

select * 
from table_name 
where col=xxx 
distribute by rand() 
sort by rand() 
limit num;

2)使用order 关键词
案例如下:

select * 
from table_name 
where col=xxx 
order by rand() 
limit num;

经测试对比,千万级数据中进行随机抽样 order by方式耗时更长,大约多30秒左右。

相关文章

  • Hive实现数据抽样的三种方法

    在大规模数据量的数据分析及建模任务中,往往针对全量数据进行挖掘分析时会十分耗时和占用集群资源,因此一般情况下只需要...

  • 2019-03-12-Hive的数据抽样

    最近在做Hive的数据抽样,基于以下考虑: 效率:数据量大的时候,可以给Hive 的使用者提供抽样数据,供他们开发...

  • 【Hive】数据抽样

    数据抽样的常用三种方法 1、随机抽样(rand()函数)[#1rand_1] 方法一:order by 与 ran...

  • Java调用Hive-metastore接口

    需求:对hive的元数据进行查询,之前师姐的实现方法是通过对MySql的hive元数据数据库操作,进而实现查询。但...

  • 大数据开发之Hive优化篇4-Hive的数据抽样-Samplin

    备注:Hive 版本 2.1.1 抽样概述 当数据量特别大时,对全体数据进行处理存在困难时,抽样就显得尤其重要了。...

  • 使用Hive随机抽样

    1 在hive中使用rand简单随机抽样 2、数据块取样(Block Sampling)--来源于网路 系统抽样 ...

  • 数仓--Hive-面试之Hive设置配置参数的方法,列举8个常用

    Hive设置配置参数的方法 Hive提供三种可以改变环境变量的方法,分别是:(1)、修改${HIVE_HOME}/...

  • 分层抽样

    这篇帖子中实现了常见集中抽样方法:【机器学习算法-python实现】采样算法的简单实现 但没有是实现 分层抽样。今...

  • hive搭建方式概览

    hive三种方式区别和搭建 Hive中metastore(元数据存储)的三种方式: a)内嵌Derby方式 b)L...

  • Hive进阶—抽样的各种玩法

    抽样 抽样在Hive 中也是比较常用的一种手段,主要用在下面的几个场景中 一些机器学习的场景中,数仓作为数据的提供...

网友评论

    本文标题:Hive实现数据抽样的三种方法

    本文链接:https://www.haomeiwen.com/subject/vvyvfrtx.html