Bootstrap

apache-sqoop使用问题及总结

目录

1.找不到hive

2.sqoophook、hivedatatypes


使用版本为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即可。

;