Hive-排序

本文围绕Hive SQL排序展开,介绍了执行SQL时默认的reducetesk情况,可通过命令配置和查看reduce个数。详细讲解了order by、distribute by、sort by、cluster by等排序方式的作用及使用场景,还给出建表导入数据、数据导出等操作示例。

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

排序

在执行SQL的时候默认是一个reducetesk
set mapreduce.job.reduces=n; – 配置reduce的个数
set mapreduce.job.reduces; – 查看配置结果

  • order by 全局最终结果排序
  • distribute by 指定分区字段 分区
  • sort by --区内数据排序
  • cluster by 当分区字段和排序字段相同 并且是升序的时候使用cluster by 替换 distribute by sort by

先设置reduce个数
set mapreduce.job.reduces=2;

数据
1,a
2,a
3,a
4,b
5,b
6,c
7,c
8,e

建表导入数据
create table tb_x(
id int ,
name string
)
row format delimited fields terminated by ‘,’ ;
load data local inpath ‘/data/x/’ into table tb_x ;

– 数据的导出 到本地的文件夹中
insert overwrite local directory ‘/data/x_res1’
select * from tb_x distribute by name;–此处分区,结果如下

		-rw-r--r--. 1 root root 32 Dec  1 11:27 000000_0
		[root@linux01 x_res1]# cat 000000_0
		8h
		7g
		6f
		5e
		4d
		3c
		2b
		1a

–此处输出按分区排序的结果
insert overwrite local directory ‘/data/x_res2’
select * from tb_x distribute by name sort by id desc;

	-rw-r--r--. 1 root root 16 Dec  1 11:35 000000_0
	-rw-r--r--. 1 root root 16 Dec  1 11:35 000001_0
	[root@linux01 x_res2]# cat 000000_0
	8h
	6f
	4d
	2b
	[root@linux01 x_res2]# cat 000001_0
	7g
	5e
	3c
	1a

用cluster by 替代distribute by name sort by name (两个字段必须一样且是升序排列才可替换)
insert overwrite local directory ‘/data/x_res3’
select * from tb_x cluster by name ;–只支持升序的

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、付费专栏及课程。

余额充值