【TalkingData技术分享】Hive并发情况下报DELETEME表不存在的异常

创业邦  •  扫码分享
我是创始人李岩:很抱歉!给自己产品做个广告,点击进来看看。  

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

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

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

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

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

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

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

附代码截图:

-- 本文档由张旭(xul.zhang@tendcloud.com)供应

随意打赏

提交建议
微信扫一扫,分享给好友吧。