项目场景:
提示:hive中一不小心将表drop掉了,通过select发现表示没有数据的:
hive中一不小心将表drop掉了,通过select发现表示没有数据的,不想重新在导入数据,因为发现hive的目录下是存在数据的
问题描述
提示:这里描述项目中遇到的问题:
由于这里的字段我是用关键字date作为字段名,后面发现在shell脚本中是无法执行成功的,会报错,在datagrip中只要加date
是可以执行成功的
但是我这边是需要写shell脚本,让其实现自动化的过程,因此我需要重新创建一张表,将date字段名改为cur_date非关键字
由于不小心将hive表drop掉了,但是发现hdfs路径下表数据还是存在的,因为当时建表的时候就是建的外部表
建表语句如下:
drop table if exists hr_cn.ods_cn_attendance_day_print_full;
create external table IF NOT EXISTS hr_cn.ods_cn_attendance_day_print_full
(id string comment '',staff_id string comment '员工id。不要用来关联员工数据,不准确',print_number string comment '打卡号。关联员工数据,与cn_staff表finger_print_number字段关联',date string comment '打卡时间',type intstatus intcomment stringwork_time_type int
) comment '设置的打卡时间'partitioned by (dt string)row format delimited fields terminated by '\001'NULL DEFINED AS ''LOCATION '/warehouse/hr_cn/ods/ods_cn_attendance_day_print_full';
执行了drop操作
解决方案:
不用再重新采集数据,直接使用hive修复数据即可
1.修改字段名(date修改为cur_date)
drop table if exists hr_cn.ods_cn_attendance_day_print_full;
create external table IF NOT EXISTS hr_cn.ods_cn_attendance_day_print_full
(id string comment '',staff_id string comment '员工id。不要用来关联员工数据,不准确',print_number string comment '打卡号。关联员工数据,与cn_staff表finger_print_number字段关联',cur_date string comment '打卡时间',type intstatus intcomment stringwork_time_type int
) comment '设置的打卡时间'partitioned by (dt string)row format delimited fields terminated by '\001'NULL DEFINED AS ''LOCATION '/warehouse/hr_cn/ods/ods_cn_attendance_day_print_full';
2.使用hive修改命令即可
msck repair table ods_cn_attendance_day_print_full;