ERROR exec.DDLTask: java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.xxx
阿新 • • 發佈:2018-12-10
問題: 通過sqoop工具將mysql中的資料匯入到hive中
sqoop import --connect jdbc:mysql://master:3306/mf --username root --password xxxx --table t_activity_page --split-by id --delete-target-dir --hive-import -m 1
報如下錯誤:
ERROR exec.DDLTask: java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.ObjectMapper.readerFor(Ljava/lang/Class;)Lcom/fasterxml/jackson/databind/ObjectReader; at org.apache.hadoop.hive.common.StatsSetupConst$ColumnStatsAccurate.<clinit>(StatsSetupConst.java:165) at org.apache.hadoop.hive.common.StatsSetupConst.parseStatsAcc(StatsSetupConst.java:297) at org.apache.hadoop.hive.common.StatsSetupConst.setBasicStatsState(StatsSetupConst.java:230) at org.apache.hadoop.hive.common.StatsSetupConst.setBasicStatsStateForCreateTable(StatsSetupConst.java:292) at org.apache.hadoop.hive.ql.plan.CreateTableDesc.toTable(CreateTableDesc.java:839) at org.apache.hadoop.hive.ql.exec.DDLTask.createTable(DDLTask.java:4321) at org.apache.hadoop.hive.ql.exec.DDLTask.execute(DDLTask.java:354) at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:199) at org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:100) at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:2183) at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1839) at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1526) at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1237) at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1227)
原因: sqoop與hive使用的jackson包的版本衝突導致 解決辦法: 將hive的lib目錄下的jackson相關jar包拷貝到sqoop的lib目錄下
- 先備份好sqoop lib目錄下的所有jackson jar包
- 將hive lib下的jackson jar包拷貝到sqoop lib目錄下。
cp $HIVE_HOME/lib/jackson*.jar $SQOOP_HOME/lib/