`
安铁辉
  • 浏览: 244845 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

hive 抽样统计

阅读更多
本文转自http://www.taobaotesting.com/blogs/2468,原文分层抽样的逻辑不是很清楚,按照自己的想法重新实现个


算法中可能会需要做抽样。用hive实现了随机抽样中简单随机、系统和分层抽样的方式,记得抽样的概念还是初中数据接触的
其实很多时候不需要理论,想也是可以想到的,不过还是总结一下
   0.测试表:
  
   drop table songpo_test;
   create table if not exists songpo_test
    (
      refund_id string,
      user_id string,
      cat_id  string,
      cat2_id  string,
      org_id  string,
      gmt_create string
    )
    partitioned by(pt string)
    row format delimited
    fields terminated by ','
    lines terminated by '\n' STORED AS SEQUENCEFILE;


   1. 简单随机抽样 (rand()) 从表中,随机打标,排序,随机抽取100个用户数据
        步骤 1). 给每行记录一个相同的标记
             2). 排序,取前100
       
        sql:
        select *
        from(
            select user_id,flag from (select user_id,'1' as flag from songpo_test) x
            distribute by user_id sort by user_id,flag desc
            )a
        where row_number(user_id)<=100;



   2.系统抽样 mod,rand() 依照userrid取模,分5组,每组随机抽取100个用户,实现如:
                1). 依据user_id,取模,获取 mod_numd
                2). 在mod_num组内然后随机排序,
                3). 从各组取出20条

    
 
       sql:
       select *
        from(
            select refund_id,user_id,mod_num,rank_num from (select refund_id,user_id,cast(10+rand()*100 as double) rank_num,user_id%5 as mod_num from songpo_test) 
            distribute by mod_num sort by mod_num,rank_num desc
            )a
      where row_number(mod_num)<=20;

 
  3.分层抽样   按照每个组的记录数来分层抽样。假设需要抽取EXTRA_NUM条记录
                1). 计算每个分区需要抽记录条数
                2). 在mod_num组内然后随机排序,
                3). 从各组取出cat_extra_num条 
          
 
            drop table test_data_extra_indexs;
            create table test_data_extra_indexs as
            select a.cat_id,cat_num,all_num,cat_num/all_num as extra_lv,(cat_num/all_num)*'EXTRA_NUM'  as cat_extra_num,c.refund_id,c.user_id,c.org_id from 
            (select cat_id,count(1) as cat_num,'1' as key from songpo_test group by cat_id) a 
            join
            (select '1' as key,count(1) as all_num from songpo_test) b 
            on a.key=b.key
            join
            (select * from songpo_test) c 
            on a.cat_id=c.cat_id;


            select *
            from(
              select refund_id,user_id,cat_id,mod_num,rank_num from 
              select refund_id,user_id,cat_id,cast(10+rand()*100 as double) rank_num,user_id%5 as mod_num,cat_extra_num from(
              (select refund_id,user_id,cat_id,cast(10+rand()*100 as double) rank_num,user_id%5 as mod_num from test_data_extra_indexs)  x
              )
              distribute by mod_num sort by mod_num,rank_num desc
            )a
      where row_number(mod_num)<=20;
分享到:
评论

相关推荐

    Hive实战模拟电商数据

    Hive提供了COUNT、SUM、AVG、MAX、MIN等聚合函数,以及GROUP BY、DISTRIBUTE BY、SORT BY等语句来实现这些统计。 6. **窗口函数**:对于时间序列分析,Hive的窗口函数(如ROW_NUMBER、LAG、LEAD、RANK等)能帮助...

    巴豆大数据团队讲师课件Hive.pdf

    Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供SQL查询功能来执行数据的统计、分析。它主要用于减少传统MapReduce编程的复杂性,可以使用类SQL语言对数据进行查询和分析...

    hive学习笔记

    9. **Hive的优化**:包括使用EXPLAIN命令分析查询计划,优化JOIN操作(如使用Broadcast JOIN),以及使用合适的统计信息(如COUNT DISTINCT估算)来提升查询效率。 10. **Hive与其他组件的集成**:Hive可以与HBase...

    车流量监控项目1

    - 随机抽样车辆信息,进行多维度分析。 - 计算常高速通过的TopN卡口。 - 进行跟车分析。 6. 架构设计: - J2EE平台作为前端,用户可指定任务类型和参数。 - 平台调用Spark-submit脚本执行任务,根据用户筛选条件...

    大数据应知应会试题及答案.pdf

    4. 大数据处理工具:Hadoop、Spark和Hive是常见的大数据处理工具,而Excel由于处理能力有限,通常不用于海量数据的分析。 5. 大数据应用:互联网是当前最突出的大数据环境,它产生了大量的用户行为数据、社交媒体...

    Hadoop开发者第四期

    - Hive的优化机制,包括动态分区、抽样统计等。 - 使用Hive的自定义函数来改善计算效率。 - 数据预处理技巧,如数据倾斜处理方法。 - 分区表的设计原则及其对计算性能的影响。 #### 三、Join算子在Hadoop中的...

    BAT数据分析面经笔试题

    **题目描述**:对于一张名为`tmp_row_num`的Hive表,需要按`muid`分组,然后在每个分组内按`time`升序排序。 **解题思路**:利用Hive中的`ROW_NUMBER()`窗口函数实现排序。 **HiveQL解答**: ```hql WITH ...

    Hadoop硬实战 [(美)霍姆斯著][电子工业出版社][2015.01]_PDF电子书下载 带书签目录 高清完整版.rar )

    技术点23 蓄水池抽样(reservoir 抽样) 4.4 本章小结 5 优化HDFS 处理大数据的技术 5.1 处理小文件 技术点24 使用Avro 存储大量小文件 5.2 通过压缩提高数据存储效率 技术点25 选择合适的压缩解码器 ...

    大数据分析及处理方法.docx

    随着互联网的发展,大数据的重要性日益凸显,它改变了传统数据处理的理念,由抽样转向全体,追求效率而非绝对精确,关注相关性而非因果关系。 在大数据的采集阶段,不仅包括传统的Oracle等关系型数据库用于存储事务...

    大数据解析41.pptx

    总结来说,大数据不仅仅是一种技术,更是一种思维方式,它挑战了传统的抽样统计方法,提倡全样本分析,关注相关性而非因果关系,并强调通过处理大量复杂数据来驱动创新和决策。随着技术的不断进步,大数据将继续在...

    福建师范大学精品大数据导论课程系列 (2.3.1)--1.3 《大数据时代的思维变革》PPT.rar

    1. **数据量的爆发**:大数据时代,数据量的急剧增加使得我们不再局限于抽样分析,而是可以进行全样本分析,这改变了我们对概率和统计的理解,提高了决策的准确性和全面性。 2. **实时性与速度**:大数据处理技术的...

    如何快速成为数据分析师?

    掌握抽样分布和中心极限定理;学会构建置信区间进行假设检验;以及运用方差分析、卡方检验和非参数检验。此外,简单和多元回归分析也是必不可少的统计方法。 其次,SQL是数据管理的语言,用于从数据库中提取、清洗...

    大数据资源宝典

    在维克托·迈尔-舍恩伯格及肯尼斯·库克耶所著的《大数据时代》中提到,与传统的随机分析方法相比,大数据技术强调的是利用全部数据而非抽样来进行分析处理。这种方式能够更全面地反映出数据的整体特征和趋势。 IBM...

Global site tag (gtag.js) - Google Analytics