我们应该都清楚order by 的含义: 根据某个字段对输出的数据排序,因为只有一个reducer,所以查询效率较慢. 那么hive中,另外两个排序,distribute by和cluster by的含义是什么呢? distribute by 分区排序 直接上例子,hive中有张工资表:salary,字段是部门id--department_id,姓名--name,薪水--salary department_id name salary 1 张三 3500 2 李一 2800 1 王五 5000…
转至http://my.oschina.net/repine/blog/296562 order by,distribute by,sort by,cluster by  查询使用说明 1 2 3 4 5 6 7 8 9 10 11 12 13 // 根据年份和气温对气象数据进行排序,以确保所有具有相同年份的行最终都在一个reducer分区中   // 一个reduce(海量数据,速度很慢) select year, temperature order by year asc, temperat…
一:order by order by会对输入做全局排序,因此只有一个Reducer(多个Reducer无法保证全局有序),然而只有一个Reducer,会导致当输入规模较大时,消耗较长的计算时间.关于order by的详细介绍请参考这篇文章:Hive Order by操作. 二:sort by sort by不是全局排序,其在数据进入reducer前完成排序,因此,如果用sort by进行排序,并且设置mapred.reduce.tasks>1,则sort by只会保证每个reducer的输出有…
hive中order by.distribute by.sort by和cluster by的区别和联系 order by order by 会对数据进行全局排序,和oracle和mysql等数据库中的order by 效果一样,它只在一个reduce中进行所以数据量特别大的时候效率非常低. 而且当设置 :set hive.mapred.mode=strict的时候不指定limit,执行select会报错,如下: LIMIT must also be specified. sort by sor…
1. order by     Hive中的order by跟传统的sql语言中的order by作用是一样的,会对查询的结果做一次全局排序,所以说,只有hive的sql中制定了order by所有的数据都会到同一个reducer进行处理(不管有多少map,也不管文件有多少的block只会启动一个reducer).但是对于大量数据这将会消耗很长的时间去执行.     这里跟传统的sql还有一点区别:如果指定了hive.mapred.mode=strict(默认值是nonstrict),这时就必须…
order by:     order by是全局排序,受hive.mapred.mode的影响.       使用orderby有一些限制:     1.在严格模式下(hive.mapred.mode=strict),orderby必须跟limit一起使用(?).         原因:在执行orderby时,hive使用一个reducer,如果查询结果量很大,这个reducer执行起来会很费劲,所以必须要限制查询输出结果的数量.         limit n 之后,reducer处理的数据…
1. order by     Hive中的order by跟传统的sql语言中的order by作用是一样的,会对查询的结果做一次全局排序,所以说,只有hive的sql中制定了order by所有的数据都会到同一个reducer进行处理(不管有多少map,也不管文件有多少的block只会启动一个reducer).但是对于大量数据这将会消耗很长的时间去执行.     这里跟传统的sql还有一点区别:如果指定了hive.mapred.mode=strict(默认值是nonstrict),这时就必须…
1.order by hive中的order by 和传统sql中的order by 一样,对数据做全局排序,加上排序,会新启动一个job进行排序,会把所有数据放到同一个reduce中进行处理,不管数据多少,不管文件多少,都启用一个reduce进行处理.如果指定了hive.mapred.mode=strict(默认值是nonstrict),这时就必须指定limit来限制输出条数,原因是:所有的数据都会在同一个reducer端进行,数据量大的情况下可能不能出结果,那么在这样的严格模式下,必须指定输…
测试数据 create table sort_test( id int, name string ) row format delimited fields terminated by '\t' lines terminated by '\n' stored as textfile; [root@wadeyu ~]# cat sort_test.log 4679 aaa 4728 aaa 3040 aaa 4207 aaa 2231 aaa 1279 aaa 7954 aaa 582 aaa 7…
hive 查询语法 select [all | distinct] select_ condition, select_ condition from table_name a [join table_other b on a.id=b.id] [where wehre_condition] [group by col_list [having condition]] [cluster by col_list | [distribute by col_list] [sort by col_lis…
order by order by 会对输入做全局排序,因此只有一个reducer(多个reducer无法保证全局有序) 只有一个reducer,会导致当输入规模较大时,需要较长的计算时间. set hive.mapred.mode=nonstrict; (default value / 默认值) set hive.mapred.mode=strict; order by 和数据库中的Order by 功能一致,按照某一项 & 几项 排序输出. 与数据库中 order by 的区别在于在hive…
近期在优化hiveSQL. 以下是一段排序,分组后取每组第一行记录的SQL INSERT OVERWRITE TABLE t_wa_funnel_distinct_temp PARTITION (pt='${SRCTIME}') SELECT bussiness_id, cookie_id, session_id, funnel_id, group_first(funnel_name) funnel_name, step_id, group_first(step_name) step_name,…
Syntax of Order By Syntax of Sort By Difference between Sort By and Order By Setting Types for Sort By Syntax of Cluster By and Distribute By Syntax of Order By The ORDER BY syntax in Hive QL is similar to the syntax of ORDER BY in SQL language. colO…
写mapreduce程序时,如果reduce个数>1,想要实现全排序需要控制好map的输出,详见Hadoop简单实现全排序. 现在学了hive,写sql大家都很熟悉,如果一个order by解决了全排序还用那么麻烦写mapreduce函数吗? 事实上,hive使用order by会默认设置reduce的个数=1,既然reducer的个数都是1了,结果自然全排序! 这也违背了充分利用分布式计算进行海量数据排序的初衷,效率低下. 那么hive又提供了一个可供选择的方式:sort by 它会保证每个r…
在Hive中,ORDER BY语句是对查询结果集进行整体的排序,最终将会产生一个reducer进行全局的排序,达到的最终结果是和传统的关系型数据库是一样的. 在数据量非常大的时候,全局排序的单个reducer将会成为性能瓶颈,有可能由于数据量过大而跑不出来结果. Hive中可以设置hive.mapred.mode为strict严格模式,这时候,Hive要求用户必须对order by语句加上limit 条数限制,防止排序数据集过大导致性能瓶颈. 在这里我不提sort by ,distribute…
在算法中,各个排序算法的复杂度都比较高,正常情况下为O (nlogn) ,所以当数据量特别大的时候,对数组进行排序消耗都很大. 因为hive的计算引擎MapReduce是分布式系统, 利用分布式的特点,可以对排序的数据各个机器节点内有序,再做归并排序, 虽然这样做的复杂度还是O (nlogn) , 但是对比老版本hive的做法,改善不少. 老版本hive的order by并不是做归并排序,而是将所有数据都集合到一台机器上,然后做一个全局排序, 这样做的缺点就是, 一个没办法利用分布式系统的并发计…
我想说的SELECT TOP N是取最大前N条或者最小前N条. Hive提供了limit关键字,再配合order by可以很容易地实现SELECT TOP N. 但是在Hive中order by只能使用1个reduce,如果表的数据量很大,那么order by就会力不从心. 例如我们执行SQL:select a from ljntest01 order by a limit 10; 控制台会打印出:Number of reduce tasks determined at compile time…
1.hive中的四种排序 1.1 order by :对全局进行排序,只能有一个reduce select * from hive.employee order by id;…
ORDER BY hive中的ORDER BY语句和关系数据库中的sql语法相似.他会对查询结果做全局排序,这意味着所有的数据会传送到一个Reduce任务上,这样会导致在大数量的情况下,花费大量时间. 与数据库中 ORDER BY 的区别在于在hive.mapred.mode = strict模式下,必须指定 limit 否则执行会报错. hive> set hive.mapred.mode=strict; hive> select * from test order by id; FAILE…
写mapreduce程序时,如果reduce个数>1,想要实现全排序需要控制好map的输出 现在学了Hive,写sql大家都很熟悉,如果一个order by解决了全排序还用那么麻烦写mapreduce函数吗? 事实上,hive使用order by会默认设置reduce的个数=1,既然reducer的个数都是1了,结果自然全排序! 这也违背了充分利用分布式计算进行海量数据排序的初衷,效率低下. 那么hive又提供了一个可供选择的方式:sort by 它会保证每个reducer的输出文件是有序的(其…
1.hive的数据加载方式 1.1.load data 这中方式一般用于初始化的时候 load data [local] inpath '...' [overwrite] into table t1 [partition(...)] -- 如果有local是从linux磁盘加载,如果没带local是从hdfs的某个目录移动到hive中 -- 带上overwrite会覆盖掉表中原来的数据 -- partition 加载到指定分区 1.2.使用查询语句向表中插入数据 insert overwrite…
shell里面对日期的操作 #!/bin/bash THIS_FROM=$(date +%Y%m%d -d "-7 day") THIS_TO=$(date +%Y-%m-%d -d "-1 day") LAST_FROM=$(date +%Y-%m-%d -d "$THIS_FROM -1 year") LAST_TO=$(date +%Y-%m-%d -d "$THIS_TO -1 year") echo $THIS_FR…
hive是Apache的一个顶级项目,由facebook团队开发,基于java开发出面向分析师或BI等人员的数据工具(常用作出具仓库),它将文件系统映射为表,使用SQL实现mapreduce任务完成分析.即使不知道它的内部机制,却不影响你的使用. 这里主要以CLI使用为主并假设对SQL没大问题,材料来源<Hive权威指南>.个人工作和网上讨论.在阅读前,希望你能先了解一下hive的安装(上一篇博客有),这对理解hive的运行机制有一定帮助.如有疑问或问题,欢迎沟通讨论. 目录 shell执行h…
[版权申明:本文系作者原创,转载请注明出处] 文章出处:http://blog.csdn.net/sdksdk0/article/details/51675005 作者: 朱培          ID:sdksdk0 Hive环境的搭建在这里也不重复说了,安装配置可以查看我的这篇文章:http://blog.csdn.net/sdksdk0/article/details/51512031.在这里主要是分享一下HQL语句实践及其函数的基本使用. 一.Hive的基本概念 在Hive中没有插入操作,…
基本数据类型 查看所有函数 搜索函数 搜索表 查看函数使用方法 关键字补全 显示表头 SET环境变量 查看建表语句.数据文件置 执行外部命令 NVL CONCAT IF CASE TRIM SUBSTRING LENGTH UPPER 非空判断 LPAD 日期函数 [is null] = [ = null]?.[is not null] = [ <> null]? [NOT] IN.[NOT] EXISTS.LEFT SEMI JOIN ORDER BY.SORT BY ROW_NUMBER…
1. 数据说明 (1) student表 hive> select * from student; # 学生ID 学生姓名 性别 年龄 所在系 # sid sname sex age dept 95002 Aiden female 19 IS 95017 Jacob female 18 IS 95018 Ethan female 19 IS 95013 Matthew male 21 CS 95014 Nicholas female 19 CS ...... (2) course表 hive>…
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 hadoop-3.1.1 apache-hive-3.1.1 一.执行计划核心思想:把Hive SQL当做Mapreduce程序去优化以下SQL不会转为Mapreduce来执行 -select仅查询本表字段 -where仅对本表字段做条件过滤 Explain 显示执行计划:EXPLAIN [EXTENDED] query hive> explain sele…
看到一篇挺不错的hive开发总结文章,在此转载一下,有兴趣的可以去看原文,传送门HIVE开发总结. 基本数据类型 查看所有函数 搜索函数 搜索表 查看函数使用方法 关键字补全 显示表头 SET环境变量 查看建表语句.数据文件置 执行外部命令 NVL CONCAT IF CASE TRIM SUBSTRING LENGTH UPPER 非空判断 LPAD 日期函数 [is null] = [ = null]?.[is not null] = [ <> null]? [NOT] IN.[NOT]…
Hive 优化 1.核心思想: 把Hive SQL 当做Mapreduce程序去优化 以下SQL不会转为Mapreduce来执行 select仅查询本表字段 where仅对本表字段做条件过滤   Explain 显示执行计划 EXPLAIN [EXTENDED] query 2.Hive运行方式: 本地模式 集群模式   2.1开启本地模式: set hive.exec.mode.local.auto=true; 2.2注意: hive.exec.mode.local.auto.inputbyt…
前言1.hive简介1.1 hive组件与相应功能:1.2 hive的表类型1.3 分区表1.3 分隔符1.4 hive的数据存储2.数据类型2.1 基本数据类型2.1 复杂数据类型2.3 NULL3.基本操作3.1 数据库操作3.2 表操作3.3 视图3.4 数据导入导出3.hsql3.1 hsql基本操作3.2 hive内置函数3.2 自定义函数3.3 注册函数4.hive权限管理4.1 权限简介4.2 权限分类4.3 授权管理5.hive优化 前言 本手册介绍了hive的基本知识及工作中要…