问题描述/异常栈
导入hive集群与本地hive集群间元数据迁移任务运行失败报错:
Caused by: org.datanucleus.exceptions.NucleusUserException: 
Error : Could not find API definition for name "JDO". Perhaps you dont have the requisite datanucleus-api-XXX jar in the CLASSPATH?
FAQ-hive数据迁移报错:缺少datanucleus-api-XXX jar - 图1
发现版本
Hive 2.3.8
NDHManger 1.4.1
排查过程
1、DataNucleus报错是因为Hive框架在某个环节尝试初始化本地/嵌入式Metastore组件才被触发;
2、如果是远程Thrift连接,不会需要DataNucleus的包,也不会发生上述报错
3、极有可能是因为hms地址配置有误导致,更可能是因为地址为空,因为如果hiveMetastoreUris参数值是空字符串或null,Hive才会认为没有远程Metastore,转而使用本地模式
问题原因
hive-site.xml参数组的hive.metastore.uris参数值为空导致
FAQ-hive数据迁移报错:缺少datanucleus-api-XXX jar - 图2
解决方案
删除hive-site.xml参数组的hive.metastore.uris参数 或 修改空的参数值为具体的thrift链接

作者:曹俊