【Hive SQL】数据探查-数据抽样

文章目录

    • 数据随机抽样
      • 1、随机数排序抽样(rand())
      • 2、数据块抽样(tablesample())
      • 3、分桶抽样

数据随机抽样

在大规模数据量的数据分析及建模任务中,往往针对全量数据进行挖掘分析时会十分耗时和占用集群资源,因此一般情况下只需要抽取一小部分数据进行分析及建模操作。下面罗列一些常用的数据抽样方法。

1、随机数排序抽样(rand())

  • order by 与 rand() 结合

    • 说明:limit限制抽样条数;order by 全局排序耗时长。
    • 示例:
      select*
      fromtable_name 
      order by rand() 
      limit 1000;
      
  • distribute 、 sort 、 rand() 结合

    • 说明:limit限制抽样条数;distribute和sort 根据rand()分桶排序,保证数据在mapper和reducer阶段随机分布。
    • 示例:
      select*
      fromtable_name 
      distribute by rand() 
      sort by rand() 
      limit 1000;
      
  • row_number() 、 rand() 结合

    • 说明:这种方式可以根据特定业务场景抽取百分比数据;row_number() 开窗后,根据业务需求分组,按照rand()排序,排序值随机,根据count() over() 得到窗口内总数据量。通过排序值/总数据量 设定阈值来抽取数据。
    • 示例:
      -- 根据用户注册日期,每日随机抽取20%的用户。
      selectt1.cust_id,t1.nums,t1.rnk
      from (select cust_id,count(cust_id) over(partition by cust_type,register_date) as nums,row_number() over(partition by cust_type,register_date order by rand()) as  rnkfromtable_name) t1
      wheret1.rnk/t1.nums <= 0.2
      

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

  • 根据 hive 表数据的大小按比例抽取数据
    • 功能:根据 hive 表数据的大小按比例抽取数据。如:抽取原 hive 表中 10%的数据
    • 示例:
    --  tablesample(n percent): 百分比(percent)
    --  语法:tablesample(n percent)
    select * 
    from table_name 
    tablesample(10 percent);--------------------------------------------------------
    --  tablesample(n M) 指定抽样数据的大小,单位为 M
    --  语法:tablesample(n M)
    --  按照数据的字节数进行采样
    --  支持 b/B, k/K, m/M, g/G
    select * 
    from table_name
    tablesample(1 M);--------------------------------------------------------
    --  tablesample(n rows) 指定抽样数据的行数,其中 n 代表每个 map 任 取 n 行数    据,map 数量可通过 hive 表的简单查询语句确认(关键词:numbe of mappers: x)
    --  语法:tablesample(n rows)
    select * 
    from table_name 
    tablesample(10 rows);
    

3、分桶抽样

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 表示桶的数量。

  • 示例:

 -- 示例1select * from table_name tablesample(bucket 1 out of 10 on rand())-- 示例2-- 如果采样的列与CLUSTERED BY 列(即分桶列)相同,则采样的效率会更高。select nameFROM employeetablesample(BUCKET 1 OUT OF 2 ON emp_id) a;```

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/50457.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kafka leader选举过程浅析

文章目录 概要核心概念leader选举具体流程小结 概要 kafka我们都知道它是通过副本机制&#xff0c;来支持负载均衡和故障转移等高可用的&#xff0c;那么具体副本的选举过程你了解吗&#xff1f;下面我们一起来学习下吧&#xff01; 核心概念 Controller定义&#xff1a;是特…

文献综述如何帮助研究人员避免现有研究的重复

VersaBot一键生成文献综述 进行良好的文献综述可以作为研究人员的有力工具&#xff0c;避免在多个方面重复现有研究&#xff1b; 1.揭示现有知识&#xff1a; 通过努力探索过去的研究&#xff0c;研究人员可以全面了解其领域中已经探索和建立的内容。这些知识使他们能够确定真…

linux系统iptable防火墙开放指定ip及端口

在Linux系统中&#xff0c;可以使用iptables命令来配置防火墙并开放指定IP的端口。下面是一些常用的命令示例&#xff1a; 1. 检查当前防火墙规则&#xff1a; iptables -L这个命令将列出当前的防火墙规则。 2. 开放TCP端口&#xff1a; iptables -A INPUT -s xxx.xxx.xxx.…

Linux基础操作(下)

软件安装&#xff0c;CentOS系统和Ubuntu是使用不同的包管理器 CentOS使用yum管理器&#xff0c;Ubuntu使用apt管理器 在CentOS系统中&#xff0c;使用yum命令联网管理软件安装 yum语法: yum [-y] [install | remove | search ] 软件名称 在Ubuntu系统中&#xff0c;使用apt命…

ShardingSphere实战(1)- 分库分表基础知识

一、为什么要分库分表 分库分表是一种数据库优化策略&#xff0c;主要用于解决大型应用或高并发场景下数据库性能瓶颈的问题。具体来说&#xff0c;分库分表可以带来以下好处&#xff1a; 提高性能&#xff1a; 减少单个数据库实例的负载&#xff0c;避免单点性能瓶颈。当数据…

Python. 协程asyncio、gevent

1、协程是一种轻量级的并发机制&#xff0c;允许你在单个线程内模拟并发执行多个任务。协程非常适合用于 I/O 密集型任务&#xff0c;如网络请求、文件读写等&#xff0c;在等待 I/O 操作完成时&#xff0c;协程可以继续执行其他任务而不是阻塞。 生成器: 协程的基础是生成器&a…

【中项第三版】系统集成项目管理工程师 | 第 11 章 规划过程组⑦ | 11.18 - 11.20

前言 第11章对应的内容选择题和案例分析都会进行考查&#xff0c;这一章节属于10大管理的内容&#xff0c;学习要以教材为准。本章上午题分值预计在15分。 目录 11.18 规划风险管理 11.18.1 风险基本概念 11.18.2 主要输入 11.18.3 主要输出 11.19 识别风险 11.19.1 主…

算法入门:Java实现排序、查找算法

链接&#xff1a;算法入门&#xff1a;Java实现排序、查找算法 (qq.com) 冒泡/选择/插入/希尔排序代码 (qq.com) 快排/归并/堆排/基数排序代码 (qq.com)

棋子豆:西北风味的绝妙演绎

棋子豆&#xff0c;形状小巧如棋子&#xff0c;却蕴含着大大的美味。它选用了西北地区特有的优质面粉&#xff0c;融合了当地传统的制作工艺。在烘烤的过程中&#xff0c;豆子逐渐变得金黄酥脆&#xff0c;散发出诱人的香气。 轻轻咬上一口&#xff0c;“嘎嘣”作响&…

电脑桌面录屏怎么录?分享这四款软件!

在这个数字化时代&#xff0c;无论是教学分享、游戏直播还是会议记录&#xff0c;电脑桌面录屏都成为了我们日常工作和娱乐中不可或缺的一部分。但面对琳琅满目的录屏软件&#xff0c;如何挑选出既高效又易用的那一款呢&#xff1f;别急&#xff0c;今天就为大家揭秘四款超实用…

Java面试八股之Spring DAO的作用

Spring DAO的作用 Spring DAO (Data Access Object) 是 Spring 框架的一个重要组成部分&#xff0c;它提供了一套用于简化数据访问操作的抽象层。Spring DAO 的核心目的是使开发人员能够更容易地处理数据访问相关的异常&#xff0c;并提供一致的异常处理机制&#xff0c;同时简…

文件描述符(fileno)及文件系统

fileno: #include <stdio.h> main() {FILE *fp;int fd;fp fopen("/etc/passwd", "r");fd fileno(fp);printf("fd %d\n", fd);fclose(fp); } 一&#xff0e;fileno()函数-CSDN博客https://blog.csdn.net/TuxedoLinux/article/detai…

七夕告白攻略:天使智能体教你如何设计完美表白卡片!独属程序员地浪漫!

文章目录 &#x1f495;七夕浪漫告白天使&#x1f495;&#x1f495;浪漫风格的表白卡片设计&#x1f495;&#x1f495;甜蜜风格的表白卡片设计&#x1f495;&#x1f495;温馨风格的表白卡片设计&#x1f495;&#x1f495;幽默风格的表白卡片设计&#x1f495;&#x1f495;…

51、PHP 实现简单的快速排序

题目&#xff1a; PHP 实现简单的快速排序 描述&#xff1a; function simpleQuickSort(array $list) {$length count($list);if( $length < 1){return $list;}else{$pivot $list[0];$left_list array();$right_list array();for($i 1; $i < $length; $i){if($lis…

MySQL学习(16):视图

视图是一种虚拟临时表&#xff0c;并不真正存储数据&#xff0c;它的作用就是方便用户查看实际表的内容或者部分内容 1.视图的使用语法 &#xff08;1&#xff09;创建 create view 视图名称 as select语句; #视图形成的虚拟表就来自于select语句所查询的实际表&#xff0c;…

Vue使用阿里巴巴字体

阿里巴巴字体使用效果 字体包下载 官方下载链接 解压字体文件到指定的文件夹 引用字体文件 我的是uniApp的项目&#xff0c;所以在公共css样式中引用这个字体文件 /*每个页面公共css */ font-face {font-family: "alimamFont";font-weight: 400;src: url("~/s…

Fiddler Mock测试详解

在软件开发过程中&#xff0c;Mock测试是一种非常有效的测试方法&#xff0c;特别是在处理复杂依赖或尚未完成的服务时。Fiddler作为一款强大的网络抓包工具&#xff0c;也提供了Mock测试的功能&#xff0c;允许开发者在不实际调用后端接口的情况下&#xff0c;模拟接口响应&am…

将YOLOv8模型从PyTorch的.pt格式转换为TensorRT的.engine格式

TensorRT是由NVIDIA开发的一款高级软件开发套件(SDK)&#xff0c;专为高速深度学习推理而设计。它非常适合目标检测等实时应用。该工具包可针对NVIDIA GPU优化深度学习模型&#xff0c;从而实现更快、更高效的运行。TensorRT模型经过TensorRT优化&#xff0c;包括层融合(layer …

为什么创业初期的ToB公司都要“交点学费”

“企业交学费”&#xff0c;本质上来说&#xff0c;就是企业成长中绕不开的“试错成本”&#xff0c;只能降低&#xff0c;无法完全避免。 但是&#xff0c;对于ToB初创企业来说&#xff0c;这个问题就相对棘手了。一是这个“费用”不可避免。二来&#xff0c;初创企业本来就没…

算法——二分查找(day10)

目录 69. x 的平方根 题目解析&#xff1a; 算法解析&#xff1a; 代码&#xff1a; 35. 搜索插入位置 题目解析&#xff1a; 算法解析&#xff1a; 代码&#xff1a; 69. x 的平方根 69. x 的平方根 - 力扣&#xff08;LeetCode&#xff09; 题目解析&#xff1a; 老…