您现在的位置是:首页 >学无止境 >spark-sql 报错:Exception thrown flushing changes to datastore网站首页学无止境

spark-sql 报错:Exception thrown flushing changes to datastore

ZhaoYingChao88 2024-06-14 17:19:58
简介spark-sql 报错:Exception thrown flushing changes to datastore

报错背景

hive创建数据库时添加中文备注信息报错。

命令:CREATE DATABASE IF NOT EXISTS hive_ods_db COMMENT 'Hive ODS层数据库';

报错现象

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:Exception thrown flushing changes to datastore)

报错原因

MySQL的存储注释信息的列的字符集有问题,需要修改。

报错解决

在MySQL终端执行如下命令:

-- 修改数据库编码
set  character_set_database =latin1;
-- 切换到hive数据库
use hive-metadata;
-- 修改字段注释字符集
alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
-- 修改表注释字符集
alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
-- 修改分区注释字符集
alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;
-- 修改数据库注释字符集
alter table DBS modify column `DESC` varchar(4000) character set utf8;

 其他问题:

  • 当 HIVE 中的元数据与 HDFS 上实际的数据不一致时,一些正常的 HIVE SQL 操作可能会执行失败。
  • HIVE 中的元数据与 HDFS 上实际的数据不一致的原因有很多,常见的有:
    • 使用了 HIVE 外表,由于外表的特性,在HIVE 中删除外表或外表的某些分区时, HDFS上对应的目录和文件仍会存在,此时就会造成不一致;(我们这里就是这种情况)
    • HIVE 的元数据和底层HDFS的数据是从其他集群同步过来的,但同步过程中有问题,比如时间没对齐状态不一致;(跨集群同步处理不善,会有这种情况)
    • HIVE中的元数据或HDFS上的数据有损坏和丢失。(集群运维管理不规范,会造成这种现象) 
  • 可以通过 msck repair table xxx 来修复 hive表的元数据: MSCK [REPAIR] TABLE table_name [ADD/DROP/SYNC PARTITIONS];


msck repair table xx;


MSCK [REPAIR] TABLE table_name [ADD/DROP/SYNC PARTITIONS];

show partitions xx;

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。