【Hive】数据抽样

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【Hive】数据抽样相关的知识,希望对你有一定的参考价值。

参考技术A 1、随机抽样(rand()函数)

2、数据块抽样(tablesample()函数)

limit关键字限制抽样返回的数据
案例: order by 全局排序耗时长

limit关键字限制抽样返回的数据
案例: rand函数前的distribute和sort关键字可以保证数据在mapper和reducer阶段是随机分布的

指定where条件,用时36s,而且可以看出是tablesample函数是在where条件之前生效的~

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

hive 抽样方法

select *
from (
select *
from advert.dws_advert_order_model_sample_pcvr_v2_di
where dt>= date_sub(‘${date}‘,7) and dt< ‘${date}‘
and ((label >=0.5 and rand()>(1-2*0.05)) or (label <0.5 and rand()>(1-2*0.05)))

union all

select *
from advert.dws_advert_order_model_sample_pcvr_v2_di
where dt=‘${date}‘
and ((label >=0.5 and rand()>(1-2*0.05)) or (label <0.5 and rand()>(1-2*0.05)))
)  tmp

where rand()>0.3;

以上是关于【Hive】数据抽样的主要内容,如果未能解决你的问题,请参考以下文章

sql Hive数据抽样表抽样(不推荐)

#yyds干货盘点#Hive数据抽样与存储格式详解

复习 | HIVE 随机采样②

Hive中的桶表入门(适用于抽样查询)

算子:sample(false, 0.1)抽样数据

Hive实现从表中随机抽样得到一个不重复的数据样本