目录
使用版本为ambari-2.7.3,自带的sqoop-1.4.7
1.找不到hive
21/09/08 11:16:16 ERROR tool.ImportTool: Import failed: java.io.IOException: Cannot run program "hive": error=2, No such file or directory
在安装sqoop的机器上,安装hive客户端并配置环境变量。
2.sqoophook、hivedatatypes(结束但无数据)
21/09/08 11:47:44 WARN mapreduce.PublishJobData: Unable to publish import data to publisher org.apache.atlas.sqoop.hook.SqoopHook
java.lang.ClassNotFoundException: org.apache.atlas.sqoop.hook.SqoopHook
查了网上没有找到直接的解决方案,故根据报错信息分析:应该首先是缺少依赖包,根据 org.apache.atlas.sqoop ,去maven仓库寻找jar包:https://mvnrepository.com/
因为看到国外网友分享的经验里面,没有直接名为sqoophook的包,那么找可能性大的
一步一步来
输入:sqoop-bridge
那么因为sqoop是1.4.7,那么猜测一下,选择版本1.2.0
拷贝到服务器的sqoop/lib/目录下。
转机出现!
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/atlas/hive/model/HiveDataTypes
at org.apache.atlas.sqoop.hook.SqoopHook.toHiveDatabaseEntity(SqoopHook.java:109)
报错信息变了,变了就有希望,说明上一次对症了,根据刚才的思路,再去maven找
看了所有相关的包,这个最接近,因为我们集群是hive2,那么猜测选择2.1.0
放到sqoop/lib/目录下,再次执行,无报错!!!
[INFO] 2021-09-08 16:35:53.721 - [taskAppId=TASK-21-274-362]:[404] - appId:application_1630928169074_2447, final state:SUCCESS
但是hdfs的表分区目录仍然是被删除的状态 ,就是MapReduce跑完了,数据是有的,但是success之后,目录被删了,数据不见了。
最终解决:--delete-target-dir 和--hive-overwrite不要一起用,经测试只用--hive-overwirte也不好使,只用--delete-target-dir即可。