HIVE基本查询操作(二)——第1关:Hive排序

这篇具有很好参考价值的文章主要介绍了HIVE基本查询操作(二)——第1关:Hive排序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第1关:Hive排序


任务描述

本关任务:2013722日买入量最高的三种股票。

相关知识

为了完成本关任务,你需要掌握:1. Hive的几种排序;2. limit使用。

hive的排序

order by

  • order by后面可以有多列进行排序,默认按字典排序(desc:降序,asc(默认):升序);
  • order by为全局排序;
  • order by需要reduce操作,且只有一个reduce,无法配置(因为多个reduce无法完成全局排序);
  • 如果指定了hive.mapred.mode=strict(默认值是nonstrict),这时就必须指定limit来限制输出条数。

表名:student

class name scores
A xiaoming 89
A xiaojun 72
B xiaohong 88
C xiaoqiang 92
C xiaogang 84

scores降序:

select * from student order by scores desc;

输出

C    xiaoqiang    92
A    xiaoming    89
B    xiaohong    88
C    xiaogang    84
A    xiaojun    72

sort by

Hive中指定了sort by,那么在每个reducer端都会做排序,也就是说保证了局部有序(每个reducer出来的数据是有序的,但是不能保证所有的数据是有序的,除非只有一个reducer),好处是:执行了局部排序之后可以为接下去的全局排序提高不少的效率(其实就是做一次归并排序就可以做到全局排序了)。

scores降序:

select * from student sort by scores desc;

输出:

C    xiaoqiang    92
A    xiaoming    89
B    xiaohong    88
C    xiaogang    84
A    xiaojun    72

distribute by

distribute by控制map输出结果的分发,相同字段的map输出会发到一个reduce节点去处理。sort by为每一个reducer产生一个排序文件,他俩一般情况下会结合使用。(这个肯定是全局有序的,因为相同的class会放到同一个reducer去处理。这里需要注意的是distribute by必须要写在sort by之前)。

scores降序:

select * from student distribute by class sort by scores desc;

输出:

C    xiaoqiang    92
A    xiaoming    89
B    xiaohong    88
C    xiaogang    84
A    xiaojun    72

cluster by

如果sort bydistribute by中所用的列相同,可以缩写为cluster by以便同时制定两者所用的列cluster by的功能就是distribute bysort by相结合(注意被cluster by指定的列只能是升序,不能指定ascdesc)。

以下两句HQL查询结果相同:

select * from student cluster by scores;
select * from student distribute by scores sort by scores desc;

输出:

A    xiaojun    72
C    xiaogang    84
B    xiaohong    88
A    xiaoming    89
C    xiaoqiang    92
limit

Hive查询中要限制查询输出条数, 可以用limit关键词指定

只输出2条数据:

select * from student limit 2;

输出:

A    xiaoming    89
A    xiaojun    72
编程要求

在右侧编辑器补充代码,查询出2013722日的哪三种股票买入量最多。

表名:total

col_name data_type comment
tradedate string 交易日期
tradetime string 交易时间
securityid string 股票ID
bidpx1 string 买入价
bidsize1 int 买入量
offerpx1 string 卖出价
bidsize2 int 卖出量

部分数据如下所示:

20130724    145004    152896    2.62    6960    2.63    13000
20130724    145101    152896    2.86    13880    2.89    6270
20130724    145128    152896    2.85    327400    2.851    1500
20130724    145143    152896    2.603    44630    2.8    10650

数据说明:

(152896:每种股票id)
(20130724: 2013年7月24日)
(145004: 14点50分04秒)
测试说明

平台会对你编写的代码进行测试:

预期输出:

股票id 买入量

553211    680580680
412233    230929160
856947    104360800

开始你的任务吧,祝你成功!文章来源地址https://www.toymoban.com/news/detail-423449.html


----------禁止修改----------
create database if not exists mydb;
use mydb;
create table if not exists total(
tradedate string,
tradetime string,
securityid string,
bidpx1 string,
bidsize1 int,
offerpx1 string,
bidsize2 int)
row format delimited fields terminated by ','
stored as textfile;
truncate table total;
load data local inpath '/root/files' into table total;
----------禁止修改----------

----------begin----------
select securityid, sum(bidsize1) s
from total
where tradedate="20130722" group by securityid order by s desc limit 3; 
----------end----------

到了这里,关于HIVE基本查询操作(二)——第1关:Hive排序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 命令行hive的基本操作

    使用SQL语句在命令行创建Hive库: 其中, database_name 是要创建的数据库的名称。例如: 这将在Hive中创建一个名为\\\"mydatabase\\\"的数据库。 使用SQL语句在命令行创建Hive表: 其中, table_name 是要创建的表的名称, column1_name 和 column2_name 是表的列名, column1_type 和 column2_type 是对应列

    2024年03月11日
    浏览(34)
  • 实验五 熟悉 Hive 的基本操作

    实验环境: 1.操作系统:CentOS 7。 2.Hadoop 版本:3.3.0。 3.Hive 版本:3.1.2。 4.JDK 版本:1.8。 实验内容与完成情况: (1)创建一个内部表 stocks,字段分隔符为英文逗号,表结构如表 A-6 所示。 打开数据库 (2)创建一个外部分区表 dividends(分区字段为 exchange 和 symbol),字段分

    2024年02月05日
    浏览(60)
  • 实验六:熟悉Hive的基本操作

    由于CSDN上传md文件总是会使图片失效 完整的实验文档地址如下: https://download.csdn.net/download/qq_36428822/85709631?spm=1001.2014.3001.5501 题目:实验六:熟悉Hive的基本操作 姓名:小猪猪 日期:2022/5/15 设备名称 LAPTOP-9KJS8HO6 处理器 Intel® Core™ i5-10300H CPU @ 2.50GHz 2.50 GHz 机带 RAM 16.0 GB (1

    2024年02月08日
    浏览(40)
  • 实验6 熟悉Hive的基本操作

    (1)理解 Hive 作为数据仓库在 Hadoop 体系结构中的角色。 (2)熟练使用常用的 HiveQL。 操作系统:Ubuntu18.04(或Ubuntu16.04); Hadoop版本:3.1.3; Hive版本:3.1.2; JDK版本:1.8。 准备工作: 由《Hive编程指南》(O’Reilly系列,人民邮电出版社)提供,下载地址: https://raw.githubuser

    2024年02月10日
    浏览(37)
  • Hive的基本SQL操作(DDL篇)

    目录 ​编辑 一、数据库的基本操作 1.1 展示所有数据库 1.2 切换数据库 1.3 创建数据库 1.4 删除数据库 1.5 显示数据库信息 1.5.1 显示数据库信息 1.5.2 显示数据库详情 二、数据库表的基本操作 2.1 创建表的操作 2.1.1 创建普通hive表(不包含行定义格式) 2.1.2 创建自定义行

    2024年02月07日
    浏览(39)
  • 大数据课程F3——HIve的基本操作

    文章作者邮箱:yugongshiye@sina.cn              地址:广东惠州 ⚪ 掌握HIve的基本SQL语句和注意问题; ⚪ 掌握HIve的表结构; ⚪ 掌握HIve的数据类型; ⚪ 掌握HIve的基础函数和窗口函数; 1. 通过hive -e的方式来执行指定的SQL,例如hive -e \\\'create database demo;\\\'。 2. 通过hive -f的方式

    2024年02月14日
    浏览(36)
  • Hive Sql优化之一次from查询多次insert into操作

    例:统计字段空值率 优化点:一次map多个reduce,有效节省了map操作 流程如下: 1.创建表; 2.插入数据; 3.参照下面语句;

    2024年02月17日
    浏览(61)
  • HIVE表 DML 操作——第4关:将 select 查询结果写入文件

    第4关:将 select 查询结果写入文件 任务描述 本关任务:根据编程要求将 select 查询结果写入文件。 相关知识 为了完成本关任务,你需要掌握:1.单文件写入,2.多文件写入。 可以把 Hive 查询结果写入或导出到文件中,与查询结果插入到表中类似,导出 Hive 表中的数据到文件

    2024年02月05日
    浏览(36)
  • Hive基本操作-增删改查和修改库表

    创建数据库 查看数据库 修改数据库属性 删除数据库 新增表 外部表和内部表最大的一个区别是,内部表在删除表的时候,数据会一起被删除,它存储在所属数据库子目录下; 外部表再删除表的时候数据不会被删除,所以外部表更加安全,在工作中也更加常用,存储在指定的

    2024年02月11日
    浏览(33)
  • 黑马大数据学习笔记4-Hive部署和基本操作

    p48、51、52 https://www.bilibili.com/video/BV1WY4y197g7/?p=48 Hive是分布式运行的框架还是单机运行的? Hive是单机工具,只需要部署在一台服务器即可。 Hive虽然是单机的,但是它可以提交分布式运行的MapReduce程序运行。 我们知道Hive是单机工具后,就需要准备一台服务器供Hive使用即可。

    2024年02月14日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包