Hive并发情况下报DELETEME表不存在的异常

线上脚本在并行某些hive任务后,偶然会报出一个DELETEME表不存在的异常,异常信息大致如下:

技术图1

 

这个错误原因很明显,就是hive在尝试删除DELETEME表时发现该表不存在。

那么为什么会有这个DELETEME表,又为什么要删掉呢?

这首先要了解一些hive的背景知识:

首先,我们知道MySQL中的库表信息是存放在information_schema库中的,Hive也有类似的机制,它会将库表信息存放在一个第三方的RDBMS中,目前我们线上配置的是本机MySQL,show tables以后会看到一堆hive的元数据表。

另外,Hive使用的是DataNuclues ORM库来操作数据库的,而基本上所有的ORM框架(对象关系映射)都会提供自动建表的功能,即开发者只需编写Java对象,ORM会自动生成DDL。DataNuclues也有这一功能,而且它在初始化时会通过生成临时表的方式来获取数据库的Catalog和Schema,也就是 DELETEME表。

附代码截图:

技术图2

发表评论

电子邮件地址不会被公开。 必填项已用*标注