Hive--排序

本文详细解析了Hive SQL中的orderby、sortby、distributeby和clusterby的使用方法及注意事项,包括它们的执行机制、参数设置及对大数据集的影响。了解这些关键字如何帮助数据在Reduce阶段进行有效排序和分布,对于优化Hive查询性能至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1). order by 只有一个reduce负责对所有的数据进行排序,若大数据量,则需要较长的时间。建议在小的数据集中使用order by 进行排序。

2). order by 可以通过设置hive.mapred.mode参数控制执行方式,若选择strict,则order by 则需要指定limit(若有分区还有指定哪个分区) ;若为nostrict,则与关系型数据库差不多。

3). sort by 基本上不受hive.mapred.mode影响,可以通过mapred.reduce.task 指定reduce个数,查询后的数据被分发到相关的reduce中。

4). sort by 的数据在进入reduce前就完成排序,如果要使用sort by 是行排序,并且设置map.reduce.tasks>1,则sort by 才能保证每个reducer输出有序,不能保证全局数据有序。

5). distribute by 采集hash算法,在map端将查询的结果中hash值相同的结果分发到对应的reduce文件中。

6). distribute by 可以使用length方法会根据string类型的长度划分到不同的reduce中,最终输出到不同的文件中。 length 是内建函数,也可以指定其他的函数或这使用自定义函数。

7). cluster by 除了distribute by 的功能外,还会对该字段进行排序,所以cluster by = distribute by +sort by 。

HiveServer2是Hive的一个服务端,通过它可以通过JDBC连接Hive,并且可以通过一个WEB服务查看当前有哪些Session进行连接,以及执行了哪些语句等详细信息。要开启HiveServer2的WEB服务,需要在hive-site.xml文件中配置相应参数,如hive.server2.webui.host和hive.server2.webui.port。使用$HIVE_HOME/bin/hiveserver2命令可以开启HiveServer2,也可以使用$HIVE_HOME/bin/hive --service hiveserver2命令来开启。要查看hiveserver2命令的帮助信息,可以使用$HIVE_HOME/bin/hiveserver2 -H命令。可以使用--hiveconf参数来直接指定hive-site.xml文件中的参数,比如修改HiveServer2的端口可以使用$HIVE_HOME/bin/hiveserver2 --hiveconf hive.server2.thrift.port=14000命令。使用Beeline工具可以连接HiveServer2,连接命令形式为$HIVE_HOME/bin/beeline -u jdbc:hive2://hostname:port/default -n hadoop,其中hostname是HiveServer2开启服务的机器的主机名,port是HiveServer2服务开启的端口,默认是10000。连接成功后可以执行相应的Hive代码查询数据。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Hive--HiveServer2 命令行代码连接、Hive常用命令、自定义UDF函数、排序](https://blog.youkuaiyun.com/qq_41301707/article/details/111238833)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [hive-exec-1.2.1.spark2.jar](https://download.youkuaiyun.com/download/u010374412/86745169)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值