`
cooler1217
  • 浏览: 366875 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

hive sort by order by

 
阅读更多
select a.* from pokes a sort by a.foo desc;

http://blog.sina.com.cn/s/blog_6ff05a2c0101eaxf.html


在hive中不光有order by操作,还有个sort by操作。两者执行的都是排序的操作,但有存在很大的不同。
还是用上次order by的例子来说明。
测试用例
hive> select * from test09;
OK
100 tom
200 mary
300 kate
400 tim
Time taken: 0.061 seconds
hive> select * from test09 sort by id;
Total MapReduce jobs = 1
Launching Job 1 out of 1
Number of reduce tasks not specified. Defaulting to jobconf value of: 2
In order to change the average load for a reducer (in bytes):
set hive.exec.reducers.bytes.per.reducer=
In order to limit the maximum number of reducers:
set hive.exec.reducers.max=
In order to set a constant number of reducers:
set mapred.reduce.tasks=
Starting Job = job_201105020924_0068, Tracking URL = http://hadoop00:50030/jobdetails.jsp?jobid=job_201105020924_0068
Kill Command = /home/hjl/hadoop/bin/../bin/hadoop job -Dmapred.job.tracker=hadoop00:9001 -kill job_201105020924_0068
2011-05-03 05:39:21,389 Stage-1 map = 0%, reduce = 0%
2011-05-03 05:39:23,410 Stage-1 map = 50%, reduce = 0%
2011-05-03 05:39:25,430 Stage-1 map = 100%, reduce = 0%
2011-05-03 05:39:30,470 Stage-1 map = 100%, reduce = 50%
2011-05-03 05:39:32,493 Stage-1 map = 100%, reduce = 100%
Ended Job = job_201105020924_0068
OK
100 tom
300 kate
200 mary
400 tim
Time taken: 17.783 seconds
结果看起来和order by差不多,但是sort by是不受hive.mapred.mode参数影响,无论hive.mapred.mode在什么模式都可以。
从上面的Number of reduce tasks not specified. Defaulting to jobconf value of: 2可以看得出来,此时共启动了2个reduce。
实际上sort by控制的是每个reduce产生的文件都是排序的(从上面的结果可以看出,整体上并不保证有序),这样对多个已经排序好的文件做一次归并排序就ok了。
比用order by的时候,仅仅有单个reduce要好得多。
我们把上面的结果写到文件中就看得清楚的多了。
hive> insert overwrite local directory ‘/home/hjl/sunwg/qqq’ select * from test09 sort by id;
Total MapReduce jobs = 1
Launching Job 1 out of 1
Number of reduce tasks not specified. Defaulting to jobconf value of: 2
In order to change the average load for a reducer (in bytes):
set hive.exec.reducers.bytes.per.reducer=
In order to limit the maximum number of reducers:
set hive.exec.reducers.max=
In order to set a constant number of reducers:
set mapred.reduce.tasks=
Starting Job = job_201105020924_0069, Tracking URL = http://hadoop00:50030/jobdetails.jsp?jobid=job_201105020924_0069
Kill Command = /home/hjl/hadoop/bin/../bin/hadoop job -Dmapred.job.tracker=hadoop00:9001 -kill job_201105020924_0069
2011-05-03 05:41:27,913 Stage-1 map = 0%, reduce = 0%
2011-05-03 05:41:30,939 Stage-1 map = 100%, reduce = 0%
2011-05-03 05:41:37,993 Stage-1 map = 100%, reduce = 50%
2011-05-03 05:41:41,023 Stage-1 map = 100%, reduce = 100%
Ended Job = job_201105020924_0069
Copying data to local directory /home/hjl/sunwg/qqq
Copying data to local directory /home/hjl/sunwg/qqq
4 Rows loaded to /home/hjl/sunwg/qqq
OK
Time taken: 18.496 seconds
[hjl@sunwg src]$ ll /home/hjl/sunwg/qqq
total 8
-rwxrwxrwx 1 hjl hjl 17 May 3 05:41 attempt_201105020924_0069_r_000000_0
-rwxrwxrwx 1 hjl hjl 17 May 3 05:41 attempt_201105020924_0069_r_000001_0
此时产生了2个文件,分别查看每个文件的内容。
[hjl@sunwg src]$ cat /home/hjl/sunwg/qqq/attempt_201105020924_0069_r_000000_0
100tom
300kate
[hjl@sunwg src]$ cat /home/hjl/sunwg/qqq/attempt_201105020924_0069_r_000001_0
200mary
400tim
可以看得出来每个文件的内部都是排好顺序的。
order by和sort by都可以实现排序的功能,不过具体怎么使用还得根据情况,如果数据量不是太大的情况可以使用order by,如果数据库过于庞大,最好还是使用sort by。

本文转自http://www.oratea.net/?p=624
分享到:
评论

相关推荐

    Hive拉拉扯扯的order by,sort by,distribute by, cluster by

    Hive支持两个层面的排序: 全局排序 部分排序 全局排序用 order by col [ASC | DESC] 实现,效果和传统的RDMS一样,...鉴于此,Hive有一些自己特定,比如order by的实现需要把所有数据汇集到一个reducer中处理,如果数

    hive

    hive hive hive hive hive hive hive hive hive hive hive hive

    hive练习数据和练习题及答案

    hive的Order By/Sort By/Distribute By Join查询,join只支持等值连接 LEFT,RIGHT 和 FULL OUTER JOIN LEFT SEMI JOIN Hive当前没有实现 IN/EXISTS 子查询,可以用 LEFT SEMI JOIN 重写子查询语句。

    Hive用户指南

    3.2 Order /Sort By 28 4. Hive Join 29 5. HIVE参数设置 31 6. HIVE UDF 33 6.1 基本函数 33 6.1.1 关系操作符 33 6.1.2 代数操作符 34 6.1.3 逻辑操作符 35 6.1.4 复杂类型操作符 35 6.1.5 内建函数 36 6.1.6 数学...

    分布式数据仓库Hive大全

    3.2 Order /Sort By 28 4. Hive Join 29 5. HIVE参数设置 31 6. HIVE UDF 33 6.1 基本函数 33 6.1.1 关系操作符 33 6.1.2 代数操作符 34 6.1.3 逻辑操作符 35 6.1.4 复杂类型操作符 35 6.1.5 内建函数 36 6.1.6 数学...

    hive-jdbc hive jdbc驱动

    hive-jdbc

    Hive3.1.2编译源码

    使用hive3.1.2和spark3.0.0配置hive on spark的时候,发现官方下载的hive3.1.2和spark3.0.0不兼容,hive3.1.2对应的版本是spark2.3.0,而spark3.0.0对应的hadoop版本是hadoop2.6或hadoop2.7。 所以,如果想要使用高...

    Hive使用手册Hive使用手册

    1 Hive 概念与连接使用: 2 2 Hive支持的数据类型: 2 2.1原子数据类型: 2 2.2复杂数据类型: 2 2.3 Hive类型转换: 3 3 Hive创建/删除数据库 3 3.1创建数据库: 3 3.2 删除数据库: 3 4 Hive 表相关语句 3 4.1 Hive ...

    【63课时完整版】大数据实践HIVE详解及实战

    19.Hive中order by、sort by、distribute by与cluster by的使用 20.Hive中分析函数与窗口函数 21.Hive中UDF的介绍 22.Hive中使用自定义UDF实现日期格式转换 23. HiveServer2的介绍及三种连接方式 24.Hive元数据、...

    Hive表生成工具,Hive表生成工具Hive表生成工具

    Hive表生成工具,Hive表生成工具Hive表生成工具

    Hive练习题数据order表数据

    Hive练习题数据

    hive介绍和hive环境搭建

    创建mysql用户:create user 'hive' identified by 'hive'; 8. 授权:grant all privileges on *.* to 'hive'@'%' with grant option 9. 重启一下这个mysql服务。 10. 使用hive用户创建数据库并修改连接信息。

    Hive.sql,hive的元数据

    Hive.sql

    hivesql语句练习

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; FLUSH PRIVILEGES; 6. Jline包版本不一致的问题,需要拷贝hive的lib目录中jline.2.12.jar的jar包替换掉hadoop中的 /home/...

    利用Hive进行复杂用户行为大数据分析及优化案例

    利用Hive进行复杂用户行为大数据分析及优化案例(全套视频+课件+代码+讲义+工具软件),具体内容包括: ...15_Hive中的数据倾斜及解决方案-group by 16_Hive中使用正则加载数据 17_Hive中使用Python脚本进行预处理

    Hive总结.docx

    Hive原理/Hive SQL/Hive 函数/数据仓库分层和建模/Hive sql优化/数据倾斜

    Hive优化方法整理

    Hive优化方法整理 hive 数据倾斜 内连接

    hive-3.1.1安装包

    Hive是一个基于Hadoop的数据仓库工具,它本身并不存储数据,部署在Hadoop集群上,数据是存储在HDFS上的. Hive所建的表在HDFS上对应的是一个文件夹,表的内容对应的是一个文件。它不仅可以存储大量的数据而且可以对...

    hive构造测试数据方法

    hive造数据

Global site tag (gtag.js) - Google Analytics