|NO.Z.00002|——————————|^^ 报错 ^^|——|Hadoop&Hive.V02|——|Hive.v02|sqoop创建job报错|缺省java-json.jar包|password文件格式错误|
附录一:报错处理一:
~~~ [sqoop创建job缺省java-json.jar]——NoClassDefFoundError: org/json/JSONObject
~~~ [sqoop创建job的password文件格式错误]——java.sql.SQLException
### --- 报错现象:sqoop执行job报错:org/json/JSONObject
~~~ # 创建 sqoop job
[root@linux123 ~]# sqoop job --create myjob1 -- import \
--connect jdbc:mysql://linux123:3306/sqoop \
--username hive \
--password-file /sqoop/pwd/sqoopPWD.pwd \
--table goodtbl \
--incremental append \
--hive-table mydb.goodtbl \
--hive-import \
--check-column serialNumber \
--last-value 0 \
-m 1
~~~ # 注:import与"--"之间必须要有一个空格
~~~ 输出参数 报错:
Exception in thread "main" java.lang.NoClassDefFoundError: org/json/JSONObject
at org.apache.sqoop.util.SqoopJsonUtil.getJsonStringforMap(SqoopJsonUtil.java:43)
at org.apache.sqoop.SqoopOptions.writeProperties(SqoopOptions.java:785)
at org.apache.sqoop.metastore.hsqldb.HsqldbJobStorage.createInternal(HsqldbJobStorage.java:399)
......
### --- 报错分析
~~~ sqoop缺少java-json.jar包.
### --- 解决方案
~~~ 这是因为sqoop缺少java-json.jar包.
~~~ 下载java-json.jar包:http://www.java2s.com/Code/Jar/j/Downloadjavajsonjar.htm
~~~ 把java-json.jar添加到../sqoop/lib目录:cp java-json.jar /sqoop/lib
附录二:报错处理二:
### --- 报错现象:password文件格式不对
~~~ # 创建 sqoop job
[root@linux123 ~]# sqoop job --create myjob1 -- import \
--connect jdbc:mysql://linux123:3306/sqoop \
--username hive \
--password-file /sqoop/pwd/sqoopPWD.pwd \
--table goodtbl \
--incremental append \
--hive-table mydb.goodtbl \
--hive-import \
--check-column serialNumber \
--last-value 0 \
-m 1
~~~ 输出参数
Error executing statement: java.sql.SQLException: Access denied for user 'hivee'@'hadoop2
ERROR manager.SqlManager: Error executing statement: java.sql.SQLException: Access denied for user 'hivee'@'hadoop2' (using password: YES)
java.sql.SQLException: Access denied for user 'hivee'@'hadoop2' (using password: YES)
ERROR tool.ImportTool: Import failed: java.io.IOException: No columns to generate for ClassWriter
### --- 报错分析
~~~ 这是由于password文件格式不对的原因导致:
### --- 解决方案:
~~~ # 正确的创建格式为
echo -n "12345678" > sqoopPWD.pwd
hdfs dfs -mkdir -p /sqoop/pwd
hdfs dfs -put sqoopPWD.pwd /sqoop/pwd
hdfs dfs -chmod 400 /sqoop/pwd/sqoopPWD.pwd
~~~ 使用--password参数将有警告,并且需要输入密码才能执行Job,所以建议用密码文件形式
~~~ 注意:使用密码文件有俩种使用方式
1>: --password-file file:///root/a.txt // 这种方式是使用服务器上的文件
2>: --password-file /input/a.txt // 这种方式是使用HDFS上的文件
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通