东营市网站建设_网站建设公司_Banner设计_seo优化
2025/12/21 20:53:18 网站建设 项目流程

Hive 3.x 的 load data默认是会跑MR任务的,而不是单纯的移动文件。

  • hive版本:3.1.3
  • spark版本:3.3.1

1)建表语句

create table stu_buck(id int, name string
)
clustered by(id) 
into 4 buckets
row format delimited fields terminated by '\t';

2)数据装载
(1)数据准备
在/opt/module/hive/datas/路径上创建student.txt文件,并输入如下内容。

1001	student1
1002	student2
1003	student3
1004	student4
1005	student5
1006	student6
1007	student7
1008	student8
1009	student9
1010	student10
1011	student11
1012	student12
1013	student13
1014	student14
1015	student15
1016	student16

(2)导入数据到分桶表中
说明:Hive新版本load数据可以直接跑MapReduce,老版的Hive需要将数据传到一张表里,再通过查询的方式导入到分桶表里面。

load data local inpath '/opt/module/hive/datas/student.txt' 
into table stu_buck;

(3)查看创建的分桶表中是否分成4个桶

理论结果:
第1个文件(000000_0)内容:

1016	student16
1012	student12
1008	student8
1004	student4

第2个文件(000001_0)内容:

1009	student9
1005	student5
1001	student1
1013	student13

第3个文件(000002_0)内容:

1010	student10
1002	student2
1006	student6
1014	student14

第4个文件(000003_0)内容:

1003	student3
1011	student11
1007	student7
1015	student15

但结果竟然是4个空文件,排查原因如下:

  1. 查看Hive执行引擎:
    SET hive.execution.engine;
    发现是spark,将执行引擎改回MR,问题解决。
    SET hive.execution.engine=mr;

补充: 如果要继续使用spark引擎,那么就必须先创建临时表,然后把数据load进临时表,然后再使用 insert into xxx select * from 临时表 ,结果也是4个文件,但文件内容跟MR引擎的不一样。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询