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

音视频
• 阅读 1438

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

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())

  1. 随机抽样(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秒左右。

关键词:大数据培训

点赞
收藏
评论区
推荐文章
Stella981 Stella981
4年前
Hive SQL使用过程中的奇怪现象
hive是基于Hadoop的一个数据仓库工具,用来进行数据的ETL,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能。HiveSQL是一种类SQL语言,与关系型数据库所支持的SQL语法存在微小的差异。本文对比MySQL和Hive所支持的SQL语法,发现相同的SQL语句在
Stella981 Stella981
4年前
Hive优化的十大方法
Hive用的好,才能从数据中挖掘出更多的信息来。用过hive的朋友,我想或多或少都有类似的经历:一天下来,没跑几次hive,就到下班时间了。Hive在极大数据或者数据不平衡等情况下,表现往往一般,因此也出现了presto、sparksql等替代品。这里重点讲解hive的优化方式,例如优化分组:sethive.auto.convert.join
Stella981 Stella981
4年前
Hive 和普通关系数据库的异同
1.查询语言。由于SQL被广泛的应用在数据仓库中,因此,专门针对Hive的特性设计了类SQL的查询语言HQL。熟悉SQL开发的开发者可以很方便的使用Hive进行开发。2.数据存储位置。Hive是建立在Hadoop之上的,所有Hive的数据都是存储在HDFS(https://www.oschina.net/act
Stella981 Stella981
4年前
SpreadJS 纯前端表格控件应用案例:MHT
由明厚天股份研发的数据填报采集平台,提供了便于用户操作的类Excel界面模式,可为用户提供规范、正确、完整的数据采集和填报模型,结合数据自动化抽样,可解析不同数据库、不同数据格式的数据,让数据填报流程更简单、更快速、更顺畅。下面,让我们一起来看看明厚天股份是如何在“MHTCP数据填报采集平台”中应用表格技术,实现“数据填报(https://www.
Stella981 Stella981
4年前
Hive小知识之分桶抽样
点击上方蓝色字体,选择“设为星标”回复”资源“获取更多资源!(https://oscimg.oschina.net/oscnet/5d1ed9fd1b5f4d4c0815c43612661c3c6ce.jpg)!(https://oscimg.oschina.net/oscnet/dc13c086ab4913119194
Stella981 Stella981
4年前
2019 年程序员行为统计白皮书.pdf
loonggg读完需要5分钟速读仅需2分钟今天在机器之心公众号看到了一篇文章,关于2019年程序员行为统计的数据,这份白皮书由aiXcoder联合机器之心发布。调查数据覆盖了国内32个省、直辖市和自治区,海外覆盖19个国家或地区。报告的统计结果是从随机抽样出的15000名开发者中得出。权威性和真实性咱们
可莉 可莉
4年前
2019 年程序员行为统计白皮书.pdf
loonggg读完需要5分钟速读仅需2分钟今天在机器之心公众号看到了一篇文章,关于2019年程序员行为统计的数据,这份白皮书由aiXcoder联合机器之心发布。调查数据覆盖了国内32个省、直辖市和自治区,海外覆盖19个国家或地区。报告的统计结果是从随机抽样出的15000名开发者中得出。权威性和真实性咱们
3A网络 3A网络
3年前
5 步教你将 MRS 数据导入 DWS
5步教你将MRS数据导入DWSMapReduce服务(MapReduceService,简称MRS)是一个基于开源Hadoop生态环境而运行的大数据集群,对外提供大容量数据的存储和分析能力,可解决用户的数据存储和处理需求。用户可以将海量业务数据,存储在MRS的分析集群,即使用Hive/Spark组件保存。Hive/Spark的数据
达达埋点迁移京东子午线实践 | 京东云技术团队
一、概述1.项目价值及成果使用集团的统一埋点采集能力和埋点平台,完成达达7条业务线共43个站点应用的埋点迁移,降低自研采集工具和平台的研发投入和机器成本,打通数据链路,创造更多的数据分析价值。具体降本增效价值如下:1.1数据分析价值:与京东流量数据打通,拉
Hive引擎底层初探
1、什么是HiveHive是一个基于Hadoop的数据仓库工具,用于处理和分析大规模结构化数据。Hive提供了类似SQL的查询语言(HiveQL),使得熟悉SQL的用户能够查询数据。Hive将SQL查询转换为MapReduce任务,以在Hadoop集群上执
京东云开发者 京东云开发者
10个月前
Hive引擎底层初探
作者:京东物流沈世莹1、什么是HiveHive是一个基于Hadoop的数据仓库工具,用于处理和分析大规模结构化数据。Hive提供了类似SQL的查询语言(HiveQL),使得熟悉SQL的用户能够查询数据。Hive将SQL查询转换为MapReduce任务,以在
音视频
音视频
Lv1
时间游走,岁搁浅,斑驳的影子映着千言万语。
文章
5
粉丝
0
获赞
0