hive分区表_插入分区乱码_删除经验

1、往hive分区表插入分区的值为中文,hive中显示乱码,在解决该问题前,需删除新增分区及数据。

2、尝试删除分区

1)尝试一:清空表数据,insert overwrite table t_tomorrow select * from t_tomorrow where 1=0;不适用分区表,提示命令不对。

2)尝试二:直接删分区,alter table t_tomorrow drop partition(nation='汉族');分区??仍存在。

3)尝试三:先进hdfs删除分区目录及数据内容,此时hive查询不到分区数据内容,但show partition t_tomorrow;仍有分区??信息;再进hive元数据库,查找分区??相关表信息,删除相关记录,最后进hive查看分区,再无分区??信息。参考https://blog.csdn.net/fg654748861/article/details/46123887

3、删除hdfs分区及内容

1)hadoop fs -rm -R /apps/hive/warehouse/t_tomorrow/nation=汉族

2)hadoop fs -ls -R /apps/hive/warehouse/t_tomorrow

3)select *from t_tomorrow;--查不到分区汉族的数据;

4)show partitions t_tomorrow; --分区仍在,进hive元数据库删除;

4、元数据库删除分区信息步骤

1)SELECT * FROM TBLS WHERE TBL_NAME='t_tomorrow'; --得到tbl_id字段值为3

2)select * from PARTITIONS t where t.tbl_id=3; --得到乱码分区对应part_id字段值为4

3)select * from PARTITION_KEY_VALS where part_id=4; --得到分区??信息

4)select * from PARTITION_PARAMS where part_id=4; --得到分区??参数信息

5)删除表PARTITION_KEY_VALS、PARTITION_PARAMS、PARTITIONS包含分区??信息,进hive查看表的分区??不显示。

delete from PARTITION_KEY_VALS where part_id=4;

delete from PARTITION_PARAMS where  part_id=4;

delete from PARTITIONS where tbl_id=3 and part_id=4;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容